У меня возникли некоторые трудности с добавлением новых элементов в ListView
, чтобы появиться в верхней части ListView
. Однако, когда новые элементы добавляются к ListView
, я хочу, чтобы текущий элемент оставался видимым, а новые элементы добавлялись над ним.Добавить новые элементы в верхней части ListView не работает. Добавляет элементы внизу, а не
Для этого я следовал за решением отсюда: https://stackoverflow.com/a/3035521/450534, и когда это тоже не сработало, я немного начал экспериментировать.
Также стоит упомянуть, что я использую библиотеку Pull to Refresh от Криса Банеса.
Теперь с любопытством, когда я добавляю paged
данные ниже последнего пункта в ListView
, все работает хорошо. Но я в тупике, почему новые предметы не будут размещены над текущим пунктом и сохранить текущую позицию. Это то, что я сделал до сих пор (в onPostExecute()
):
// GET THE CURRENT LISTVIEW POSITION (USED TO MAINTAIN SCROLL POSITION)
int currentPosition = actualListView.getFirstVisiblePosition();
Log.e("POSITION", String.valueOf(currentPosition));
View v = actualListView.getChildAt(0);
int top = (v == null) ? 0 : v.getTop();
Log.e("TOP", String.valueOf(top));
/***** APPEND NEW DATA TO THE ADAPTER AND THE LISTVIEW *****/
// CAST THE ADAPTER (AGAIN)
adapter = new NewsFeedAdapter(getActivity(), arrFeeds);
// SET THE ADAPTER TO THE LISTVIEW
actualListView.setAdapter(adapter);
// SET THE SCROLL POSITION
actualListView.setSelectionFromTop(currentPosition, top);
lv.onRefreshComplete();
Это начало ListView
и это то, что должно еще можно увидеть после добавления новых элементов в верхней части (выше этого). Я планирую показать небольшой макет, который показывает, сколько новых фидов находится сверху. Что-то вроде приложения Facebook теперь.
Но новые элементы добавляются в нижней части ListView
вместо сверху выше существующих элементов.
Есть ли что-то очевидно, что я пропустил? Если вам нужно, чтобы я добавил код, скажите мне, и я добавлю его немедленно.
Благодарим за быстрый ответ. Я тоже пробовал этот метод. Проблема (я подозреваю) заключается в том, что я извлекаю все данные в 'for loop' в' doInBackground() '. Этот код предназначен для получения Newsfeeds из API Facebook. Если бы количество предметов должно было быть указано, константа 1, то я думаю, что ваше предложение может работать. По-моему, это так. – SSL
Даже если вы попытаетесь извлечь данные в doInBackground из Asynctask, вы бы установили адаптер в список, и этот адаптер будет содержать некоторый список пользовательских объектов? –
Если вы имеете в виду POJO, то да. У меня есть тот, который используется для 'ArrayList'. Класс называется 'NewsfeedData'. Вы хотите, чтобы я добавил часть 'doInBackground()' также? – SSL