在按钮按下时更改ListView的背景颜色

3

我知道如何使用bindView在listview上设置颜色。因此,每当它被创建(或滚动到屏幕上)时,颜色就会被设置...

但是,如果我不想销毁并重新创建整个视图,该怎么做呢?

也就是说,如果我按下一个按钮,我希望突出显示所有当前屏幕上的项目(在listview中),这些项目的第二个字段在游标中等于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

你是否在使用自定义适配器? - Shivam Verma
@ShivamVerma 是的,它扩展了 SimpleCursorAdapter,但只是一个自定义布局。 - Mcloving
1个回答

3

在按钮的onClick事件中,您需要调用adapter.notifyDataSetChanged()方法来刷新ListView中的数据,并将第二个字段为false的项目设置为您喜欢的颜色。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接