0

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

谁能帮我解决这个问题??

任何帮助是极大的赞赏。

谢谢

4

1 回答 1

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的内容,就像您开始下载一样,不要一次又一次地开始它。maketrue在你的AsyncTask's onPreExecute并且falseonPostExecute.

  • 现在,当您的下载完成时,然后在您以前的列表中添加新数据,而不是并排..使用方法setList。这就是您面临的崩溃的原因Scroll。您在列表中添加数据但没有调用notifyDataSetChanged();
  • 还有一件事你的第一个电话是在 UI 线程上..?也将该请求移入Thread
于 2012-07-18T10:02:49.697 回答