我有一个 ListActivity 显示项目列表,每个项目的右端都有一个 ImageView,它在开头显示一个箭头图标。按下某个按钮后,我想用删除图标替换这些箭头图标。为此,我已更改 ListView 的 ArrayAdapter 并调用 notifyDataSetChanged()。在 ArrayAdapter 的 getView 方法中,我为 ImageView 设置了 ImageResource,但更改未显示在列表中,只有第一个条目具有更改的图标。
这是 ArrayAdapter 代码:
private class CCAdapter extends ArrayAdapter<CCcenter>{
ArrayList<CCcenter> items;
int mode;
public CCAdapter(Context context, int textViewResourceId, ArrayList<CCcenter> Items,int m) {
super(context, textViewResourceId, Items);
this.items=Items;
this.mode=m;
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.lisitem, null);
}
final CCcenter o = items.get(position);
if (o != null) {
TextView title = (TextView) v.findViewById(R.id.ttl_txt);
TextView desc=(TextView)v.findViewById(R.id.desc_txt);
TextView dist=(TextView)v.findViewById(R.id.dist_txt);
ImageView icon=(ImageView)findViewById(R.id.lst_icon);
RatingBar rating=(RatingBar)findViewById(R.id.lst_ratings);
if(title!=null)
{
title.setText(o.title);
}
if(desc!=null)
{
desc.setText(o.desc);
}
if(dist!=null)
{
dist.setText(o.dist);
}
if(rating!=null)
{
rating.setRating(o.rating);
}
if(icon!=null) //edit mode
{
if(this.mode==1)
{
icon.setImageResource(R.drawable.arrow);
}
else
{
icon.setImageResource(R.drawable.dlet);
}
}
}
return v;
}
}
在按钮的 OnClick 方法中,我执行以下操作:
CCAdapter mAdapter=new CCAdapter(context, R.layout.lisitem, CCS,2);
MyList.this.setListAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
MyList.this.getListView().invalidateViews();
但是在这样做之后,只有列表的第一个条目有一个删除图标,其他人只显示默认的箭头图标。我做错了什么?