我正在根据分页获取项目。所有项目都在显示,但问题是当我停止在任何位置滚动时,它会移动到顶部。请帮我解决这个问题。我在onscrolllistener
的{{1}}中遇到了问题。
我的代码如下:
listview
答案 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);
}