В части моего приложения для Android у меня есть ListView
, который показывает список записей в таблице. Когда пользователь нажимает на элемент ListView
, отображается новый Intent
для этого элемента.
В новом намерении пользователь может выполнить некоторые операции над этой записью, например , чтение , , редактирование , , добавление (и , исключение , когда элемент уже в фаворе). В подробном намерении я изменяю «помеченный» столбец записи в ее таблице на 1 , когда он предпочтителен и на 0 , когда избранен .
Работает нормально. Но проблема в моем мастере ListView
. Я установил пользовательский CursorAdapter
для моего ListView
. Я хотел добавить ImageView
, который указывает, будет ли запись добавлена или нет. В файле макета моего элемента ListView
я добавил для этого ImageView
и установил для visibility
значение GONE
.
Я хочу обнаружить избранный элемент и установить его звезду ImageView
visibility
на VISIBLE
. Затем я запустил приложение в моем устройстве. Как обычно, ни одна из записей не является предпочтительной. Затем нажмите на первый элемент на ListView
и откроется страница сведений об этом элементе. Я одобрил это и вернулся к списку.
Хорошо, теперь на первом элементе есть значок звездочки, но не только на этом, но и на некоторых других. На странице сведений об этих неправильно отмеченных элементах написано, что это не избранный . Так что проблема не в моей работе с базой данных. Также я проверил курсор, который показывает отмеченные элементы, и его .getCount()
также сказал, что только 1 item предпочтителен . Я не могу найти, где есть проблема. Я написал свой упрощенный исходный код для пользовательских CursorAdapter
ниже:
public class HereIsMyAdapter extends CursorAdapter {
private final LayoutInflater mInflater;
public HereIsMyAdapter(Context context, Cursor cursor) {
super(context, cursor, true);
mInflater = LayoutInflater.from(context);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView txtTestText = (TextView) view.findViewById(R.id.txtTestText);
ImageView imgMark = (ImageView) view.findViewById(R.id.imgMark);
txtSureAz.setText(cursor.getString(cursor.getColumnIndex("azname")));
boolean isMarked = cursor.getInt(cursor.getColumnIndex("marked")) == 1 ? true : false;
if (isMarked) {
imgMark.setVisibility(0);
}
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = mInflater.inflate(R.layout.my_list_item, parent, false);
bindView(view, context, cursor);
return view;
}
}