【问题标题】:getview of Baseapdapter always returns 0 index in androidBaseapdapter 的 getview 在 android 中总是返回 0 索引
【发布时间】:2013-12-24 12:58:10
【问题描述】:

我有一个问题,我的适配器的 getView 方法总是返回 0 作为索引。因此,我的 GridView 中只有一张图像显示了 2 次。所以,请提出任何解决方案。

代码:适配器

public class LibraryAdapter extends BaseAdapter{

    Context _context;
    ArrayList<String> listMags;
    HashMap<String, ArrayList<String>> hashMap;

    public LibraryAdapter(Context context, ArrayList<String> listMags, HashMap<String, ArrayList<String>> hashMap)
    {
        _context = context;
        this.listMags = listMags;
        this.hashMap = hashMap;
    }

    @Override
    public int getCount()
    {
        return listMags.size();
    }

    @Override
    public Object getItem(int arg0)
    {
        return listMags.get(arg0);
    }

    @Override
    public long getItemId(int arg0)
    {
        return 0;
    }

    @Override
    public View getView(int arg0, View arg1, ViewGroup arg2)
    {
        ItemHolder itemHolder;
        String magName = listMags.get(arg0);
        if (arg1 == null)
        {
            LayoutInflater layoutInflaterObj = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            itemHolder = new ItemHolder();
            arg1 = layoutInflaterObj.inflate(R.layout.library_grid_item, null);

            itemHolder.imgMag = (ImageView) arg1.findViewById(R.id.imgIssuesGridItem);

            itemHolder.tvMagName = (TextView) arg1.findViewById(R.id.tvIssuesDate);
            arg1.setTag(itemHolder);
        }
        else
        {
            itemHolder = (ItemHolder) arg1.getTag();
        }
        Bitmap bmp = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/MAGZ/"+magName+"/"+hashMap.get(magName).get(0)+"/"+(hashMap.get(magName).get(0).replace(magName, ""))+arg0+".png");
        //itemHolder.imgIssueItem.setImageUrl(getItem(position).getImage_path(), imageLoader);
        itemHolder.imgMag.setImageBitmap(bmp);
        itemHolder.tvMagName.setText((new File(Environment.getExternalStorageDirectory()+"/MAGZ/"+magName+"/"+hashMap.get(magName).get(0))).getName());

        return arg1;
    }

    static class ItemHolder
    {
        ImageView imgMag;
        TextView tvMagName;
    }
}

提前致谢。

【问题讨论】:

  • 在此处发布定义网格视图的 xml。
  • @Sanat Pandey 看看我的答案。

标签: android adapter baseadapter


【解决方案1】:

尝试像这样覆盖 getItemId() 方法:

@Override
public long getItemId(int arg0)
{
    return arg0;
}

【讨论】:

    【解决方案2】:

    除了显示位置0之外,更改以下行添加arg0,如下所示:

     Bitmap bmp = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/MAGZ/"+magName+"/"+hashMap.get(magName).get(arg0)+"/"+(hashMap.get(magName).get(arg0).replace(magName, ""))+arg0+".png");
    
     itemHolder.imgMag.setImageBitmap(bmp);
     itemHolder.tvMagName.setText((new File(Environment.getExternalStorageDirectory()+"/MAGZ/"+magName+"/"+hashMap.get(magName).get(arg0))).getName());
    

    并且还将您的getItemId 方法更改如下:

    @Override
    public long getItemId(int arg0)
    {
        return arg0;
    }
    

    【讨论】:

    • 我根据您的评论更改了代码,但它保持不变。在 getView 中总是返回 0。
    • 您的 GridView 高度是 xml 文件中的 wrap_content 吗?
    • 感谢 Piyush 解决了,但我很想知道这背后的原因,你能告诉我这背后的确切原因吗。
    【解决方案3】:

    你已经给了 return 0

    试试这个

       @Override
    public long getItemId(int position)
    {
        return position;
    }
    

    【讨论】:

      猜你喜欢
      • 2013-10-16
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 2014-05-30
      相关资源
      最近更新 更多