相关疑难解决方法(0)

在列表视图中每次刷新时保持滚动位置

我在我的应用程序中设置了一个计时器,我可以从Web服务获取一些信息,并生成一个列表视图来显示.现在我的问题是,每次计时器运行时,滚动回到开头......

如何在列表视图中每次刷新时保持滚动位置?

我的部分代码:

runOnUiThread(new Runnable() {
    public void run() {
        /**
         * Updating parsed JSON data into ListView
        * */
        ListAdapter adapter = new SimpleAdapter(DashboardActivity.this, 
                                                all_chat, 
                                                R.layout.list_item, 
                                                new String[] { TAG_FULLNAME,
                                                               TAG_DATE, 
                                                               TAG_MESSAGE }, 
                                                new int[] { R.id.fullname,
                                                            R.id.date, 
                                                            R.id.message }
                                               );
        // updating listview
        setListAdapter(adapter);
    }
});
Run Code Online (Sandbox Code Playgroud)

TNX.

android listview scroll

9
推荐指数
2
解决办法
2万
查看次数

有没有办法更新反应原生ListView数据源,以便它不重置滚动位置?

我有一个获取初始DataSource的ListView.然后,用户可以运行搜索,该搜索将使用新的DataSource更新ListView.不幸的是,当发生这种情况时,滚动位置会重置,这并不理想.

我尝试重用相同的ListView.DataSource对象而不是创建一个新对象,但这给了我相同的结果:

...

dataSource: new ListView.DataSource({
  rowHasChanged: (r1, r2) => r1 !== r2
}),

componentWillReceiveProps(nextProps) {
this.setState({
  dataSource: this.dataSource.cloneWithRowsAndSections({...});
}

...
Run Code Online (Sandbox Code Playgroud)

我在dataSource更改后尝试在ListView上使用scrollTo,但是这会让应用程序跳转很多......不是很好的体验.是否有ListView设置或更新数据源的不同方法,以防止滚动位置重置?

ListView有2个粘性标题,顶部标题有2行页面描述和一个渲染3图像网格的redux容器.第二部分是最多50个组件的列表,这些组件的渲染有点重:正方形图像,一些文本和一些SVG.我当前的方法使用onContentSizeChange强制滚动位置,但这会导致滚动位置跳跃,它看起来很业余.

更新:深入研究ListView的文档和源代码,最终只需渲染ScrollView.我可以使用contentOffset来设置初始滚动位置,但是当ListView DataSource更新时它似乎没有帮助; 甚至硬编码contentOffset也无济于事.我也尝试将scrollEnabled设置为false,这确实阻止了用户驱动的滚动,但是当它的DataSource更新时,ListView滚动位置仍然被重置:s

更新2:我做了一些进一步的调试,发现建议的rowHasChange和sectionHeaderHasChanged函数只能很好地渲染需要渲染的行/节头.

react-native react-native-listview

8
推荐指数
1
解决办法
611
查看次数

如何在Android中保存和恢复ListView位置

我有tabView,在每个标签中显示列表.当我在一个选项卡中滚动时,切换到另一个选项卡并返回到上一个选项卡,位置返回到顶部而不是显示上一个滚动位置.我该如何实现这一目标?需要知道如何使用onSaveInstanceState和onRestoreInstanceState来保存位置并使用保存的位置来显示上一个滚动位置.

提前致谢.


谢谢大家的回复.我尝试了所有的解决方案,但遇到了其他问题.基本上我面临的问题如下.

当我启动我的应用程序时,我有一个listview作为我的第一个活动.当我单击列表项时,它会启动包含3个选项卡的选项卡活动.所有3个选项卡都使用名为ListActivity的相同活动.但是3个标签包含不同的数据.我的问题是当我在选项卡之间切换时如何保留列表的位置.通过提供上述解决方案,当我在一个选项卡中更改位置时,它也会影响其余选项卡.例如,如果我在第一个选项卡中的位置6,则此位置将设置为第二个和第三个选项卡,以及我对所有3个选项卡使用相同的ListActivity.我不被允许分享代码.所以必须这么长时间输入问题.创建的选项卡数量也是动态的.它可能是3或4或5.但是所有选项卡都使用1个ListActivity.

任何人都可以给我一个如何实现这一目标的例子.1.单个ListActivity在多个选项卡中使用.2.在影响其他选项卡后,将光标位置保留在选项卡中.

您的解决方案表示赞赏.提前致谢.

android listview tabview

6
推荐指数
2
解决办法
2万
查看次数

ListView获取滚动位置?

我正在使用MergeAdapter(来自Mark Murphy的优秀系列项目).您将它与ListView一起使用.我正在尝试在刷新时重建适配器的内容(而不是刷新"就地"并调用notifyDataSetChange()).

我想得到listview的y滚动值,所以我可以在重建列表后重置为该值.这似乎不可能吗?

谢谢

android

6
推荐指数
1
解决办法
2万
查看次数

在屏幕上的滚动视图中显示视图

在我的活动中,我有一个滚动视图,其中包含具有许多视图的线性布局.有没有办法在开始此活动时显示特定视图(来自线性布局)?默认情况下,此视图是隐藏的,因此我必须滚动滚动视图才能使其可见.

非常感谢,Gratzi

android

5
推荐指数
1
解决办法
1744
查看次数

拉动刷新时保留滚动位置

我在我的Android应用程序中使用PullToRefresh.到目前为止工作正常.

我面临的问题是,当我从TOP新行中下载新的x行时,推出现有行并从0位置开始,这对用户来说很烦人.我想要的是,在下载新的行集后,列表应保留在那里,让用户向下查看新的行集.

任何想法我怎么能实现这一目标?

android android-listview pull-to-refresh

3
推荐指数
1
解决办法
5440
查看次数

更新列表视图时保持当前滚动位置

我想使用下面的代码获取新数据并将其更新到我的 listView 中,我想要的是当我滚动到 listView 底部时,它会自动更新并将新数据添加到列表中。

例如:像facebook一样,只在底部添加新数据而不滚动并保持当前位置

但我最终遇到了一些问题。哪个是

1) 列表视图已更新,但它滚动回顶部。

listview .setOnScrollListener(new OnScrollListener() {
    private int currentVisibleItemCount;
    private int currentScrollState;
    private int currentFirstVisibleItem;
    private int totalItem;

    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        this.currentScrollState = scrollState;
        this.isScrollCompleted();
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem,
                         int visibleItemCount, int totalItemCount) {

        this.currentFirstVisibleItem = firstVisibleItem;
        this.currentVisibleItemCount = visibleItemCount;
        this.totalItem = totalItemCount;

    }
    private void isScrollCompleted() {

        if (totalItem - currentFirstVisibleItem == currentVisibleItemCount
                && this.currentScrollState == SCROLL_STATE_IDLE) {

            Log.d("this is", "the end");
            page …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-adapter onscrolllistener

3
推荐指数
1
解决办法
6851
查看次数

Android ListView y位置

似乎ListView没有以与ScrollView相同的方式公开其y位置.换句话说:我需要记住ListView滚动到的确切位置,并在我返回活动时设置它.

只是为了澄清:我不需要选择的项目......这很简单.我需要恢复ListView上精确的像素y位置.

谢谢!

android listview state position

1
推荐指数
1
解决办法
7364
查看次数

如何在片段弹回堆栈后保持网格视图滚动位置?

我正在开发一个活动中有多个片段的android应用程序.我在片段里面使用网格视图.当我更改片段然后将堆栈弹回到旧片段时,网格视图滚动位置被更改为位置零.如何在片段弹回堆栈后保持网格视图滚动位置?

android android-fragments

1
推荐指数
1
解决办法
2145
查看次数