好的,我的应用程序中有一个列表活动。 我试图使它成为当选择列表项以显示选择时,视图的背景应该改变。但是现在当我选择一个项目时,该项目会被选中,但随机列表项目的背景会同时更改,但选择仍然正确。 我在哪里弄错了?
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
Cursor c = (Cursor) mAdapter.getItem(position);
String a = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String b = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
if (names != null)
{
if(numbers.contains(b))
{
names = names.replace(a+";", "");
numbers = numbers.replace(b+";", "");
v.setBackgroundResource(R.drawable.background);
}
else{
names = names + a + ";";
numbers = numbers + b + ";";
v.setBackgroundResource(R.drawable.background_sel);
}
}
else
{
names = a+";";
numbers = b+";";
v.setBackgroundResource(R.drawable.background_sel);
}
}
答案 0 :(得分:0)
我相信Android可以重复使用相同的视图来创建列表;这就是为什么当您为一个视图设置背景时,您可以看到其他列表元素也具有新颜色。
要获得所需的行为,您应该记住/恢复ListView获取数据以填充列表的同一位置的“已选择”状态。您可能必须创建自己的ListAdapter并覆盖getView()
以在每个项目(而不是每个视图对象)的基础上设置背景。