一个适配器的多个gridview

时间:2013-08-20 11:28:11

标签: android android-layout gridview android-gridview

我在我的Activity上制作了一个包含大量图像的应用程序我有11个gridview。问题是每个gridview我将不得不制作一个新的适配器来填充图像我正在寻找一种方法来使用一个适配器填充每个Gridview来显示不同的图像堆栈!它是否可能是新的android所以我不知道该搜索什么

由于

编辑:以下是我的代码,其中包含一个

的适配器
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;
    }

private Integer[] mThumbIds = {
        R.drawable.pic76, R.drawable.pic87,
        R.drawable.pic77, R.drawable.pic88,
        R.drawable.pic78, R.drawable.pic89,
        R.drawable.pic79, R.drawable.pic90,
        R.drawable.pic80, R.drawable.pic91,
        R.drawable.pic81, R.drawable.pic82,
        R.drawable.pic82, 
        R.drawable.pic83, 
        R.drawable.pic84, 
        R.drawable.pic85, 
        R.drawable.pic86
};

你可以看到我对我的图像进行了硬编码,有没有为什么要这样做 如果griview ==“first”那么

3 个答案:

答案 0 :(得分:0)

11个网格视图?为什么?这一切都在一个视图上吗?你不能在多个适配器视图上共享适配器实例,这是非常不推荐/不可能的。

答案 1 :(得分:0)

    @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  View row = convertView;
  RecordHolder holder = null;

  if (row == null) {
   LayoutInflater inflater = ((Activity) context).getLayoutInflater();
   row = inflater.inflate(layoutResourceId, parent, false);

   holder = new RecordHolder();
   holder.imageItem = (ImageView) row.findViewById(R.id.item_image);
   row.setTag(holder);
  } else {
   holder = (RecordHolder) row.getTag();
  }


  holder.imageItem.setImageBitmap(data.get(position));
  return row;

 }

要为网格视图实现自定义适配器,您需要在适配器中实现getView方法,在该方法中您必须传递一个int位置,此位置用于传递数组或列表以创建适配器来自。

所以你所能做的就是把你的逻辑放在你使用位置来填充你的适配器的地方。

你可以做到。

Else在这里分享您的代码并让我看到它。

感谢。

答案 2 :(得分:0)

您可以使用以下方式制作不同类型的视图:

@Override
public int getItemViewType(int position) {
    return 1; //your type info here
}

因此适配器中的每个元素都可以具有不同的视图。只需在getView方法中进行一些切换。 记得也要覆盖getViewTypeCount,这样适配器就会知道你有多少种类型。