В настоящее время я потерял в проблеме, что у меня есть список, который отображает ImageViews, когда ListView прокручивает вверх. Я добавлю больше данных в список и сделаю ListView все еще показывает текущее изображение вместо первого изображения из списка. Поэтому я использую метод setSelection после изменения данных и вызова notifyDatasetHasChanged(). Но когда я прокручиваю список еще раз после вызова выше, я получаю неправильную позицию в методе getView() из адаптера.Android ListViewAdapter возвращает неправильную позицию после добавления дополнительных данных и вызова метода setSelection()
Вот код:
for (int i = tempPics.size() - 1; i >= 0; i--) {
DBChapterPicture pic = (DBChapterPicture) tempPics.get(i);
chapterPics.add(0, pic);
}
detailAdapter.notifyDataSetChanged();
detailListView.setSelection(chapterPics.size() - headState - 1);
И после этого куска, выполненного в GetView() мой адаптер я получил неправильную позицию:
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{}
Я не знаю, почему. Я думаю, это может быть вызвано методом setSelection().
Заранее спасибо.
Q1: Почему каждый цикл 'chapterPics.add' добавляет ваш объект' pic' к индексу 0? Q2: Какова ценность 'headState'? –
A1: Я хочу, чтобы недавно добавленные фотографии были в верхней части списка. A2: headState - значение смещения. – AirTayork