我有一个由SimpleCursorAdapter和自定义ViewBinder支持的ListView。我想让这个listview中的项目在点击时改变它们的颜色。如果我在OnClickListener中这样做 - 它可以单独工作,改变点击项目的颜色和列表中项目的颜色,每个第7(我想这个时间段取决于列表视图的可视区域)。ListView项setTextColor修改其他元素
任何人都可以建议如何处理这个?或者,也许指向一个更优雅的方式,使listView中的项目可选?
谢谢。
UPD:(对不起,坏的格式 - 这是我第一次张贴问题):
下面是我如何努力使在ListView项目“选择”:
private void setupListView(final ListView lv) {
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterView, View view, int position, final long id) {
RelativeLayout layout = (RelativeLayout) view;
int color;
if (conditionMet) {
color = R.color.gray;
} else {
color = R.color.red;
}
for(int i = 0; i < layout.getChildCount(); i++) {
((TextView)layout.getChildAt(i)).setTextColor(getResources().getColor(color));
}
return;
}}
这是我的init适配器:
final SimpleCursorAdapter adapter =
new SimpleCursorAdapter(
this,
itemId,
cursor,
from,
to
);
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
final TextView textView = (TextView) view;
// do necessary conversions
return true;
}
});
listView.setAdapter(adapter);
你能告诉我们你的代码吗? – MByD 2011-04-24 09:18:17
添加了一些代码,添加任何其他部分?实际上,正如我所说,这部分工作,因为它“突出显示”项目本身,但随后它的视图被重用,我想 – khusrav 2011-04-24 09:34:28