根据 activity (Android) 在自定义适配器上更改布局文件
Changing Layout file on custom adapter depending on activity (Android)
我想根据 activity 是 运行 更改使用的布局文件。我有两个需要网格视图的活动,两者都非常相似,所以我认为我应该能够使用相同的适配器。唯一需要更改的是布局文件。
这是我的自定义适配器:
package com.example.placesofinterest;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import java.util.ArrayList;
public class GridAdapter extends BaseAdapter {
private Context context;
private LayoutInflater inflater;
private ArrayList<Bitmap> img;
public GridAdapter(Context c, ArrayList<Bitmap> img){
this.context = c;
this.img = img;
}
@Override
public int getCount() {
return img.size();
}
@Override
public Object getItem(int position) {
return img.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.places_layout, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(convertView);
convertView.setTag(myViewHolder);
}
MyViewHolder myViewHolder = (MyViewHolder)convertView.getTag();
myViewHolder.img.setImageBitmap(img.get(position));
return convertView;
}
public class MyViewHolder {
public ImageView img;
public MyViewHolder(View view) {
img = view.findViewById(R.id.imageView);
}
}
}
我在想在 getView 中是否可以确定 MainActivity1 是 运行 还是 MainActivity2 是 运行 并使用它,我可以更改布局文件。
即:
if (convertView == null) {
inflater = LayoutInflater.from(context);
if (Activity = MainActivity )
convertView = inflater.inflate(R.layout.row_layout, parent, false);
else if (Activity = MainActivity2)
convertView = inflater.inflate(R.layout.row_layout2, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(convertView);
convertView.setTag(myViewHolder);
}
你试过吗?
if (context instanceof MainActivity) {
// some code
} else if (context instanceof MainActivity2){
// handle service case
}
我不确定它是否有效,但试着告诉我 :D
我想根据 activity 是 运行 更改使用的布局文件。我有两个需要网格视图的活动,两者都非常相似,所以我认为我应该能够使用相同的适配器。唯一需要更改的是布局文件。
这是我的自定义适配器:
package com.example.placesofinterest;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import java.util.ArrayList;
public class GridAdapter extends BaseAdapter {
private Context context;
private LayoutInflater inflater;
private ArrayList<Bitmap> img;
public GridAdapter(Context c, ArrayList<Bitmap> img){
this.context = c;
this.img = img;
}
@Override
public int getCount() {
return img.size();
}
@Override
public Object getItem(int position) {
return img.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.places_layout, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(convertView);
convertView.setTag(myViewHolder);
}
MyViewHolder myViewHolder = (MyViewHolder)convertView.getTag();
myViewHolder.img.setImageBitmap(img.get(position));
return convertView;
}
public class MyViewHolder {
public ImageView img;
public MyViewHolder(View view) {
img = view.findViewById(R.id.imageView);
}
}
}
我在想在 getView 中是否可以确定 MainActivity1 是 运行 还是 MainActivity2 是 运行 并使用它,我可以更改布局文件。
即:
if (convertView == null) {
inflater = LayoutInflater.from(context);
if (Activity = MainActivity )
convertView = inflater.inflate(R.layout.row_layout, parent, false);
else if (Activity = MainActivity2)
convertView = inflater.inflate(R.layout.row_layout2, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(convertView);
convertView.setTag(myViewHolder);
}
你试过吗?
if (context instanceof MainActivity) {
// some code
} else if (context instanceof MainActivity2){
// handle service case
}
我不确定它是否有效,但试着告诉我 :D