按下按钮时更改列表视图背景颜色
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
,而不必去数据库。我将移除位置部分,看看是否需要。
并快速跟进..我不需要设置位置,因为没有任何改变。你提到的那个方法太棒了! :) 我知道它存在,并且我以前使用过它,但我从未意识到它可以做到这一点。以上是关于按下按钮时更改列表视图背景颜色的主要内容,如果未能解决你的问题,请参考以下文章