【问题标题】:More than one gridview with one adapter一个适配器的多个gridview
【发布时间】:2013-08-20 11:28:10
【问题描述】:

我在我的 Activity 上制作了一个包含大量图像的应用程序,我有 11 个 gridview。问题是对于每个 gridview 我必须制作一个新的 Adapter 来填充图像我正在寻找一种方法来使用一个 Adapter 填充每个 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" 然后

【问题讨论】:

  • 你的 11 gridview 有相同的属性吗?相同的列数,相同的参数等?
  • 是的,相同的列数相同的参数,但每个显示不同的图像

标签: android android-layout gridview android-gridview


【解决方案1】:
    @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 的位置,该位置用于传递数组或列表以创建适配器来自。

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

你可以做到的。

或者在这里分享你的代码,让我看看。

谢谢。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      所以适配器中的每个元素都可以有不同的视图。只需在 getView 方法中进行一些切换。 请记住还要覆盖 getViewTypeCount,以便适配器知道您有多少种类型。

      【讨论】:

        猜你喜欢
        • 2011-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多