У меня есть ListView, поддерживаемый SimpleCursorAdapter и пользовательским ViewBinder. Я хочу, чтобы элементы в этом списке меняли цвет при нажатии. Если я делаю это в OnClickListener - он работает частично, изменяя цвет элемента, по которому щелкнули, и элементов вниз по списку, каждый седьмой (думаю, период зависит от видимой области списка).
Может кто-нибудь подсказать, как с этим бороться? Или, может быть, указывают на более элегантный способ сделать элементы в списке выбора доступными для выбора?
Спасибо.
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;
}}
Вот так я запускаю адаптер:
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);