图标无法在android中的listview中正确显示

时间:2014-06-30 11:12:25

标签: android listview android-listview

我面临一个奇怪的问题。我创建了一个导航抽屉,我在其中显示了一个列表视图。列表视图的项目包括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;
    }

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

1 个答案:

答案 0 :(得分: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
}
相关问题