按下按钮时更改列表视图背景颜色

Posted

技术标签:

【中文标题】按下按钮时更改列表视图背景颜色【英文标题】:change listview background colour on button press 【发布时间】:2014-06-19 04:47:42 【问题描述】:

我知道如何使用 bindView 在列表视图上设置颜色。因此,无论何时创建(或滚动到屏幕上)颜色都会设置...

但是我如何在不破坏和重新创建整个事物的情况下浏览现有视图。

Aka,如果我按下一个按钮,我希望突出显示所有现有的屏幕项目(在列表视图中),光标中有第二个字段 = False

Item 1, True
Item 2, True
Item 3, False -- Should highlight Green on button press.
Item 4, True

编辑:

目前我这样做,但它需要刷新光标。

    int currentPosition = lv.getFirstVisiblePosition(); // Obtain where list is
    lv.setAdapter(null);


    Cursor cursor = SqlDB.getCursor();
    adap = new MyAdaptor(this, R.layout.list, cursor, columns, to, true, 0);

    lv.setAdapter(adap);
    lv.setSelection(currentPosition); // Move back to where it was

【问题讨论】:

您使用的是自定义适配器吗? @ShivamVerma 是的,它扩展了SimpleCursorAdapter,但只是一个自定义布局。 【参考方案1】:

在按钮的 onClick 事件中,您需要调用 adapter.notifyDataSetChanged() ,它将刷新列表视图中的数据,然后将您的首选颜色设置为光标中具有第二个字段的项目 == false

【讨论】:

谢谢。如果你看到我的问题,你可以看到我在做什么。我现在已经删除了 SetAdapter 并用你的建议替换,重新获取光标。从你的回答中我想到了。我本可以使用我的全局adap 调用setAdapter,而不必去数据库。我将移除位置部分,看看是否需要。 并快速跟进..我不需要设置位置,因为没有任何改变。你提到的那个方法太棒了! :) 我知道它存在,并且我以前使用过它,但我从未意识到它可以做到这一点。

以上是关于按下按钮时更改列表视图背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何使用背景颜色设置圆形按钮并在按下时更改颜色

在按下时查看:按下时更改背景颜色?如何显示正在按下视图?

通过更改背景颜色向用户显示他按下按钮的简单方法?

更改圆形按钮android的背景颜色

列表视图滚动更改项目视图的背景颜色(简单适配器)

按下Android设置背景颜色按钮