listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View view, int position, long id)
{
View v;
int count = parent.getChildCount();
v =parent.getChildAt(position);
parent.requestChildFocus(v, view); v.setBackground(res.getDrawable(R.drawable.transparent_button));
for (int i=0; i<count; i++)
{
if (i!= position)
{
v = parent.getChildAt(i);t v.setBackground(res.getDrawable(R.drawable.not_clicked));
}
}
}
});
По сути, создайте два рисованных элемента - один прозрачный, а другой желаемый цвет. Запросите фокус на нажатой позиции (int position, как определено) и измените цвет указанной строки. Затем пройдитесь по родителю listview
и измените все остальные строки соответственно. Это учитывается, когда пользователь нажимает на listview
несколько раз. Это делается с помощью пользовательского макета для каждой строки в listview
. (Очень просто, просто новый файл макета с textview
- не устанавливайте фокус или кликабельность!) Не требуется пользовательский адаптер - используйте адаптер массива