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