Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ListView:滚动到ListView顶部的项目(并将其保留在那里)?_Java_Android_Listview_Android Listview_Runnable - Fatal编程技术网

Java ListView:滚动到ListView顶部的项目(并将其保留在那里)?

Java ListView:滚动到ListView顶部的项目(并将其保留在那里)?,java,android,listview,android-listview,runnable,Java,Android,Listview,Android Listview,Runnable,我有一个列表视图,上面有大量的项目。我想找出一种方法,让它滚动到某个位置,但该位置必须在视图的最顶端 另一个问题是ListView在这种情况发生后的某个时间点失效并重新绘制,我需要它在重新绘制时返回到这个位置 我已经尝试了smoothScrollToPosition,但这只会将项目带入视图,而不会将其置于顶部。我已经尝试滚动(x,y),但我不知道项目在视图中的确切y位置。我已经尝试过setSelection和setSelectionFromTop,但是当视图无效时,选择被重置。我也在一个post

我有一个列表视图,上面有大量的项目。我想找出一种方法,让它滚动到某个位置,但该位置必须在视图的最顶端

另一个问题是ListView在这种情况发生后的某个时间点失效并重新绘制,我需要它在重新绘制时返回到这个位置

我已经尝试了smoothScrollToPosition,但这只会将项目带入视图,而不会将其置于顶部。我已经尝试滚动(x,y),但我不知道项目在视图中的确切y位置。我已经尝试过setSelection和setSelectionFromTop,但是当视图无效时,选择被重置。我也在一个post(Runnable)调用中尝试了所有这些东西,但没有成功

这是我目前的解决方案,非常糟糕

listView.post(new Runnable() {

    @Override
    public void run() {
      listView.smoothScrollToPosition(10000);
      listView.smoothScrollToPosition(pos);
    }
  });
这将迫使它向下滚动到底部,然后向上滚动,直到指定位置的项目进入视图,这将产生将其放置在顶部的效果。幸运的是,动画只会从顶部滚动到末端位置,因此它实际上不会播放到底部再进行备份。然而,这个解决方案很慢,很粗糙,而且通常很糟糕。有人有更好的吗