Android - 反向列表视图作为消息显示

Flo*_*ade 12 reverse android listview

我的Android应用程序有一个小问题.我搜索了很长时间,但没有发现我的问题.

场景:我要显示一个还原列表视图(如Facebook Messenger).当用户滚动到顶部时,加载更多消息.

问题:notifiyDataAsChanged()通话结束后,滚动不一样!我想保存与装载前完全相同的位置.

我试过那段代码:

// save index and top position
int index = list.getFirstVisiblePosition()+result.size();
View v = list.getChildAt(index);
int top = (v == null) ? 0 : v.getTop();

// ...
// restore
list.setSelectionFromTop(index, top);
Run Code Online (Sandbox Code Playgroud)

但加载后滚动不完全相同.

你有个主意吗?

jim*_*thy 38

我认为你应该考虑使用TranscriptModeStackFromBottom与你的listview:

android:stackFromBottom="true"
android:transcriptMode="normal"
Run Code Online (Sandbox Code Playgroud)

通过将抄本模式设置为正常,仅当最后一个项目已在视图中时,它才会滚动到底部.这样,当您调用notifydatasetchanged时,您的用户可以不间断地查看以前的列表视图项.

  • 这个答案有误导性.`stackFromBottom`将对象移动(堆叠)到底部,它不会创建相反的顺序.仍然从底部添加对象,这不是@FlorianMacLanglade所要求的(我也在寻找相同的解决方案). (7认同)

小智 6

这样做:

Collections.reverse(YourList); // ADD THIS LINE TO REVERSE ORDER!
YourList.notifyDataSetChanged;
Run Code Online (Sandbox Code Playgroud)