当滚动Listview并停在任何项目时,它会移动到顶部位置android

时间:2014-10-26 11:12:44

标签: android listview android-listview scrollview

我正在根据分页获取项目。所有项目都在显示,但问题是当我停止在任何位置滚动时,它会移动到顶部。请帮我解决这个问题。我在onscrolllistener的{​​{1}}中遇到了问题。

我的代码如下:

listview

3 个答案:

答案 0 :(得分:2)

在每个传入数据中创建适配器时,列表会滚动到第一个位置,为了解决此问题,您只需创建一次适配器,然后使用adapter.notifyDataSetChanged();刷新数据。

onCreate方法中使用

 adapter = new UpcomingMovieAdapters(this, R.layout.upcoming,result);
 listView.setAdapter(adapter);

然后在异步类中使用以下代码。

 public void update2(ArrayList<HashMap<String, String>> result) {
   this.result.addAll(result);

   // just use this line 
   adapter.notifyDataSetChanged();

答案 1 :(得分:0)

问题是您是否反复将适配器设置到列表中。您应该只执行一次,每次设置时,列表视图都会重置为顶部。相反,您需要更新适配器的一个实例,然后调用notifyDataSetChanged()告诉列表视图更新自己。

答案 2 :(得分:0)

我认为,问题在于调用new MovieTop().execute(); onScroll已停止,因为数据会被解析为下一页,但适配器会在onPostExecute中再次创建。

如果this.result是包含所有结果的ArrayList,请尝试使用:

if(adapter == null) {
    adapter = new UpcomingMovieAdapters(this, R.layout.upcoming,result);
    listView.setAdapter(adapter);
}