Android列表活动

时间:2010-09-02 17:59:24

标签: android

好的,我的应用程序中有一个列表活动。 我试图使它成为当选择列表项以显示选择时,视图的背景应该改变。但是现在当我选择一个项目时,该项目会被选中,但随机列表项目的背景会同时更改,但选择仍然正确。 我在哪里弄错了?

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);
    }
}

1 个答案:

答案 0 :(得分:0)

我相信Android可以重复使用相同的视图来创建列表;这就是为什么当您为一个视图设置背景时,您可以看到其他列表元素也具有新颜色。

要获得所需的行为,您应该记住/恢复ListView获取数据以填充列表的同一位置的“已选择”状态。您可能必须创建自己的ListAdapter并覆盖getView()以在每个项目(而不是每个视图对象)的基础上设置背景。