В части моего приложения Android у меня есть ListView
, который показывает список записей в таблице. Когда пользователь нажимает на элемент ListView
, отображается новый Intent
для этого элемента.ListView с пользовательским CursorAdapter не работает хорошо
В новом умысел пользователь может сделать некоторые операции на этой записи, чтение, редактирование, (заносить в избранное и unfavoriting когда деталь уже добавили в избранное). В подробном намерении изменить «помеченные» столбец записи в его таблице 1 когда и добавили в избранное в когда unfavorited.
Он отлично работает. Но проблема в моем хозяине ListView
. Я установил обычай CursorAdapter
для моего ListView
. Я хотел добавить ImageView
, что указывает на погоду: фаворитом или нет. В файле макета моего ListView
item я добавил ImageView
и установил его visibility
на GONE
.
Я хочу, чтобы найти понравившуюся вещь и установить ее звезду ImageView
visibility
до VISIBLE
. Затем я запустил приложение на своем устройстве. Как обычно, ни одна из записей не является предпочтительной. Затем постукивают по первому элементу на странице ListView
и странице сведений об открытии этого элемента. I понравился и вернулся к списку.
Хорошо, теперь есть значок звезды на первом куске, но не только на этом, но и на некоторые другие предметы. Страница подробностей для этих неправильных помеченных объектов говорит, что это не favorited. Таким образом, проблема не в моих операциях с базой данных. Также я проверил курсор, который показывает отмеченные элементы, и его .getCount()
также сказал, что только позиция favorited. Я не могу найти, где есть проблема. Я написал свой упрощенный исходный код для заказа 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;
}
}
Хорошая идея, но не работала :(есть еще не-хотел марок. И в разных пунктах при открытии приложения –
Извините, но я просто понял, почему вы звоните BindView() по методу NewView ? – juanmhidalgo
Я вызвал этот метод, увидев его в пользовательском учебнике CursorAdapter, который я нашел во время поиска по этой проблеме. Но результат тот же, даже если я удалю эту строку –