Настройка цвета фона для элемента списка

#android #android-layout

#Android #android-макет

Вопрос:

У меня есть ListActivity, который устанавливает SimpleCursorAdapter для ListView в моем XML-файле (android: id =»@android: id / android:list»). У меня есть пять строк в предварительно заполненной базе данных. Когда начнется действие, я хочу установить фон представления элемента списка, соответствующего строке базы данных с _id 3, на синий. Этот элемент может отображаться в любом месте списка, поскольку пользователь может добавлять, редактировать и удалять элементы списка. (Поэтому я не могу полагаться на индексацию по номеру дочернего узла.) Если элемент был удален, я ничего не хочу делать.

Как мне найти правильный вид?

Добавленная информация: элемент списка организован следующим образом (к вашему сведению, это схема, а не фактический XML-код):

 <LinearLayout>
    <TextView/>
    <TextView/>
</LinearLayout>
  

Это схема файла макета, который я передаю конструктору SimpleCursorAdapter.

Ответ №1:

в методе BindView() вашего адаптера вы можете определить _id строки и вызвать view.setBackgroundResource(R.drawable.my_blue_background); будет выглядеть примерно так

 public void bindView(View view, Context ctx, Cursor cursor) {
    if(cursor.getInt(cursor.getColumnIndex("_id"))==3)
        view.setBackgroundResource(R.drawable.my_blue_background);
}
  

Ответ №2:

Чтобы расширить ответ JoeLallouz, на самом деле это родительский элемент представления, который необходимо изменить (только один раз), плюс нам нужно некоторое представление о макете элемента списка.

 public void bindView(View view, Context ctx, Cursor cursor) {
    if(view.getId() == R.id.known_view amp;amp; cursor.getInt(cursor.getColumnIndex("_id"))==3) {
        // Works if view's parent is the root of the list item's layout
        ((View)view.getParent()).setBackgroundResource(R.drawable.my_blue_background);
    }
}