滚动列表视图时加载内容而不中断列表视图

时间:2012-07-18 09:20:15

标签: android listview scrollbar

我正在Listview上开发一个应用程序。我的应用应该如下所示: 当我在第10个位置滚动列表视图时它应该首次显示10个元素它应该开始加载下10个项目,依此类推。在加载下一个10项时,我应该与listview的前一项进行交互。我不希望在加载时出现进度对话框。我已经完成了所有工作,但在加载listview数据时遇到了问题。当listview开始加载项目时,我的listview挂起。它既不向上也不向下,如果我快速滚动它会显示我强制关闭对话框。

任何人都可以帮我解决这个问题吗?

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

理解您的代码太复杂了。

但这里有一些技巧可以帮到你。

  • 在您的适配器中,它们应该是这样的方法

    public void setList(List<YouCoustemClass> list) {
                    if (list != null && list.size() > 0) {
                        items.clear();
                        items.addAll(list);
                        notifyDataSetChanged();
                    }
                }
    
    • 您的OnScroll方法将如下

    int lastInScreen = firstVisibleItem + visibleItemCount;

                        if ((lastInScreen == totalItemCount) && (loadingMore)) {
                             adapter.notifyDataSetChanged();
                        }
                        if ((lastInScreen == totalItemCount) && !(loadingMore))`
    

此处添加了额外的check,就像您开始下载一样,不要一次又一次地启动它。在true中制作AsyncTask's onPreExecute,在false中制作onPostExecute

  • 现在,当您的下载完成后,在您之前的列表中添加新数据,而不是并排使用方法setList。这是您在Scroll面临崩溃的原因。您正在列表中添加数据,但未调用notifyDataSetChanged();
  • 还有一件事你的第一个电话是UI线程..?也会在Thread
  • 中移动该请求