Java 根据活动更改自定义适配器上的布局文件(Android)

Java 根据活动更改自定义适配器上的布局文件(Android),java,android,android-studio,gridview,custom-adapter,Java,Android,Android Studio,Gridview,Custom Adapter,我想根据正在运行的活动更改使用的布局文件。我有两个活动需要一个网格视图,两者非常相似,所以我想我应该能够使用相同的适配器。唯一需要更改的是布局文件 这是我的自定义适配器: package com.example.placesofinterest; import android.content.Context; import android.graphics.Bitmap; import android.view.LayoutInflater; import android.view.View;

我想根据正在运行的活动更改使用的布局文件。我有两个活动需要一个网格视图,两者非常相似,所以我想我应该能够使用相同的适配器。唯一需要更改的是布局文件

这是我的自定义适配器:

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);
        }
    }
}


你试过这么做吗

if (context instanceof MainActivity) {
  // some code
} else if (context instanceof MainActivity2){
  // handle service case
}

我不确定它是否能工作,但试着告诉我:D

试着将adapter
public GridAdapter(Context c,ArrayList img)
的构造函数更改为
public GridAdapter(Context c,ArrayList img,int layout)
,并将布局保存到一个全局字段,然后在getView()中,就像'convertView=inflater.inflate(layout,parent,false);' . 因此,您可以为同一适配器传入不同的布局。很抱歉,回复太晚,我还需要修复其他错误,但它可以工作!非常感谢。只需将特定于该活动的所有内容放在if语句中,它就能完美地工作
if (context instanceof MainActivity) {
  // some code
} else if (context instanceof MainActivity2){
  // handle service case
}