您应该编写自己的适配器。 我建议您从BaseAdapter扩展。 代码如下所示:
// These are members of your activity
private List mList = null;
private int mNewlyAddedItem;
private class Adapter extends BaseAdapter {
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return (long)position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(position == mNewlyAddedItem) {
convertView.setBackgroundColor(Color.GRAY);
} else {
convertView.setBackgroundResource(R.drawable.listview_background);
}
// Set text to our TextView
TextView nameText = (TextView)convertView.findViewById(R.id.text1);
nameText.setText(mList.get(position));
return convertView;
}
}
而不是在onListItemClick处理程序内更改背景,您应该分配mNewlyAddedItem :
public void onListItemClick(ListView parent, View v, int position, long id) {
String Select = this.getListAdapter().getItem(position).toString();
if(copyitems.contains(Select)){
copyitems.remove(Select);
mNewlyAddedItem = -1;
}else{
copyitems.add(Select);
mNewlyAddedItem = position;
}
}
mNewlyAddedItem = position;
希望我理解您的任务正确。 无论如何,您明白了这一点:您应该更改适配器代码以基于某种状态(可以使用Activity成员变量进行设置)绘制视图,更改状态,然后视图将更新(也可以调用getListView().invalidateViews()以强制重绘所有视图(如果有时未重绘)。