【问题标题】:Icons not displaying properly in listview in android图标无法在 android 的列表视图中正确显示
【发布时间】:2017-12-06 01:28:03
【问题描述】:

我遇到了一个奇怪的问题。我创建了一个导航抽屉,其中显示了一个列表视图。 listview 的 item 由一个 imageview 和一个 textview 组成。我显示的大多数项目没有任何图标,只有最后 3 个项目在左侧有一个图标,我正在使用位置参数进行检查。如果大于 14,则图标将显示,否则不显示。当列表视图第一次显示时,所有项目都正确显示,但是在我滚动列表视图后,一些其他项目会获取图标,当我向上和向下滚动时,所有项目都会获取随机图标。我正在使用以下代码 -

public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        DrawerItemHolder drawerHolder;
        View view = convertView;

        if (view == null) {
            LayoutInflater inflater = ((Activity) context).getLayoutInflater();
            drawerHolder = new DrawerItemHolder();

            view = inflater.inflate(layoutResID, parent, false);
            drawerHolder.ItemName = (TextView) view
                    .findViewById(R.id.drawer_itemName);
            drawerHolder.icon = (ImageView) view.findViewById(R.id.drawer_icon);
            drawerHolder.layout=(LinearLayout) view.findViewById(R.id.itemLayout);

            view.setTag(drawerHolder);

        } else {
            drawerHolder = (DrawerItemHolder) view.getTag();

        }

        DrawerItem dItem = (DrawerItem) this.drawerItemList.get(position);
        if(position>14){
            drawerHolder.icon.setImageDrawable(view.getResources().getDrawable(
                dItem.getImgResID()));
        }

        drawerHolder.ItemName.setText(dItem.getItemName());
        if(dItem.getItemName().equals("Categories")){
            view.setEnabled(false);
            drawerHolder.layout.setBackgroundColor(Color.DKGRAY);
        }else{
            drawerHolder.layout.setBackgroundColor(dItem.getBackground());
        }

        return view;
    }

感谢任何帮助。提前致谢。

【问题讨论】:

标签: android listview android-listview


【解决方案1】:

listview 回收它的视图,但你没有条件来判断你的图标是否小于或等于 14。

修改适配器中的 if 语句:

if(position>14)
{
        drawerHolder.icon.setImageDrawable(view.getResources().getDrawable(dItem.getImgResID()));
}
else
{
      // ADD THIS - do not display icon
      // If you set invisible for example, don't forget to set to visible in the condition above
}

【讨论】:

  • 我也尝试过 else 部分,但错过了在 if 部分中将可见性设置为可见。在我设置了可见性之后,它工作得很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-02
  • 2020-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
相关资源
最近更新 更多