【问题标题】:More than one image arrays in the adapter class of gridviewgridview的适配器类中的多个图像数组
【发布时间】:2014-02-22 13:02:24
【问题描述】:

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

我目前的适配器类如下:

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 语句。但它没有用:(我正在尝试并寻找不同的方法来完成它。如果你有相同的解决方案,请随时在此处发布。

【问题讨论】:

  • 是的,通用ImageAdapter 并根据您的要求将不同的 ImageArray 'mThumbIds' 从 Activity 传递到 ImageAdapter。
  • 完成了。感谢您的帮助。

标签: android gridview android-arrayadapter


【解决方案1】:

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

// 索引 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;
    }

【讨论】:

  • 非常感谢。我会用同样的方法检查。
  • 非常感谢您帮助我,Padma Kumar 先生。它工作正常。我一直在寻找解决方案。现在已经清除了。非常感谢。
  • @user3340580 如果您的问题得到解决,您需要接受答案以帮助其他人认为这是解决方案。
  • 已接受。我是这个网站的新手。我不知道“接受”的东西。无论如何,我的问题已经解决了,我松了一口气。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多