#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);
}
}