android – 在光标加载后将ListView滚动到某个位置

android – 在光标加载后将ListView滚动到某个位置,第1张

概述我有一个带有ListView的片段,我希望ListView在保存和恢复片段时保持其滚动位置.通常这很简单,只需在保存时调用ListView.getFirstVisiblePosition(),并在恢复时调用ListView.setSelection()(ListView.setSelectionFromTop(),如果你想获得幻想). 但是,我正在使用加载器,并且在活动开始时我的ListView没 我有一个带有ListVIEw的片段,我希望ListVIEw在保存和恢复片段时保持其滚动位置.通常这很简单,只需在保存时调用ListVIEw.getFirstVisibleposition(),并在恢复时调用ListVIEw.setSelection()(ListVIEw.setSelectionFromtop(),如果你想获得幻想).

但是,我正在使用加载器,并且在活动开始时我的ListVIEw没有完全填充.如果我在onActivityCreated()期间使用setSelection(),则列表将无法滚动到任何内容,并且将忽略该调用.

我现在通过在将来的某个时间发布滚动来解决这个问题,但这绝对不是理想的.我希望它能在数据完成加载时向右滚动.我差不多这样做了,但是swapCursor()没有刷新,它只是为将来安排了一个失效.

@OverrIDepublic voID onLoadFinished(Loader<Cursor> loader,Cursor data) {    mAdapter.swapCursor(data);    if (savedScrollposition != null) {        Log.d(TAG,"loaded and scrolling to " + savedScrollposition);        new Handler().postDelayed(new Runnable(){            @OverrIDe            public voID run() {                List.setSelection(savedScrollposition);                savedScrollposition = null;            }        },100);    }}

当ListVIEw完成数据填充时,您知道有什么方法可以直接滚动ListVIEw吗?

解决方法 试试这个:

ListVIEw.post(new Runnable() {        @OverrIDe        public voID run() {            ListVIEw.setSelection(savedScrollposition);            savedScrollposition = null;        }    });
总结

以上是内存溢出为你收集整理的android – 在光标加载后将ListView滚动到某个位置全部内容,希望文章能够帮你解决android – 在光标加载后将ListView滚动到某个位置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1129624.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存