Android ListView add items to top without list view scroll
This question already has an answer here:
Retaining position in ListView after calling notifyDataSetChanged
3 Solutions collect form web for “Android ListView add items to top without list view scroll”
I have found solution here Retaining position in ListView after calling notifyDataSetChanged
Sorry for duplicate question.
The final code is this:
int index = this.commentsListView.getFirstVisiblePosition() + comments.size(); View v = this.commentsListView.getChildAt(commentsListView.getHeaderViewsCount()); int top = (v == null) ? 0 : v.getTop(); this.commentsListViewAdapter.AddRangeToTop(comments); this.commentsListViewAdapter.notifyDataSetChanged(); this.commentsListView.setSelectionFromTop(index, top);
May be this is what you are looking for:
“This makes list automatically scroll to the bottom when a data set change notification is received and only if the last item is already visible on screen.” – as quoted here
Also have a look at ListView’s method
public void setSelection (int position). After you added new comments, and notified your adapter, you can use it to keep the current item selected.
// Get the current selected index int previousSelectedIndex = yourListView.getSelectedItemPosition(); // Change your adapter this.commentsListViewAdapter.AddRangeToTop(comments); this.commentsListViewAdapter.notifyDataSetChanged(); // Determine how many elements you just inserted int numberOfInsertedItems = comments.size(); // Update the selected position yourListView.setSelection(previousSelectedIndex + numberOfInsertedItems);
NOTE: Code is untested. Good luck