gridview的适配器类中有多个图像数组

时间:2014-02-22 13:02:25

标签: android gridview android-arrayadapter

我目前正在开展一个展示手机及其价格的项目。 我的项目包含两个网格视图。第一个gridview显示带有文本(品牌名称)和图像的移动品牌列表。当我们点击第一个gridview中的内容时,会显示第二个gridview,其中包含一个mob图像列表和一个特定品牌的价格。 我的项目运行成功,但我已经使用了很多适配器类。我的问题是,是否可以使用一个具有多个图像阵列的适配器类来显示不同暴徒品牌的图像。

我当前的适配器类如下:

iphone mob的适配器类

public class ImageAdapter1 extends BaseAdapter {
    private Context mContext;

    public ImageAdapter1(Context c) {
        mContext = c;
    }

    public int getCount() {
        return mThumbIds.length;
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }

    // references to our images
    private Integer[] mThumbIds = {
          R.drawable.iphone1, R.drawable.iphone2,
          R.drawable.iphone3, R.drawable.iphone4,
          R.drawable.iphone5, R.drawable.iphone6
    };
} 

三星的适配器类

public class ImageAdapter2 extends BaseAdapter {
    private Context mContext;

    public ImageAdapter2(Context c) {
        mContext = c;
    }

    public int getCount() {
        return mThumbIds.length;
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }

    // references to our images
    private Integer[] mThumbIds = {
            R.drawable.samsung1, R.drawable.samsung2,
            R.drawable.samsung3, R.drawable.samsung4
    };
}

我尝试了很多方法只使用一个适配器类,并尝试在适配器类的getView()中使用if语句。但它没有工作:(我正在尝试并寻找不同的方法来完成它。如果你有相同的解决方案,请随时在这里发布。

1 个答案:

答案 0 :(得分:0)

//是的,您可以通过传递索引或标志来重新使用您的适配器

// index 0-samsung,1- ​​iphone

ImageAdapter imgAdapter=new ImageAdapter (context, index);
mylist.setAdapter(imgAdapter);

//在你的ImageAdapter中你喜欢这个

public class ImageAdapter extends BaseAdapter {
    private Context mContext;
private int[] mImagesList;

    public ImageAdapter1(Context c, int index) {
            mContext = c;

     if(index==0){// for samsung image
                this.mImagesList=samsungmThumbIds;
            } else if(index==1){
            this.mImagesList=applemThumbIds;
            }
}

    public int getCount() {
        return mImagesList.length;
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mImagesList[position]);
        return imageView;
    }