2012-07-18 16 views
0

我正在Listview上開發應用程序。我的應用應該看起來像這樣: 它應該在第一次顯示10個元素時,我在第10個位置滾動列表視圖,它應該開始加載下10個項目,依此類推。在加載下10個項目時,我應該與以前的listview項目交互。我不想在加載時出現進度對話框。在加載listview數據的時候,我已經做了所有事情,但都面臨一個問題。當listview開始加載項目時,我的列表視圖掛起。它既不向上也不向下,如果我快速滾動,則表明我強制關閉對話框。在不中斷列表視圖的情況下加載滾動列表視圖的內容

任何人都可以幫助我解決這個問題嗎?

任何幫助,非常感謝。

謝謝

+0

發佈您的代碼。 – 2012-07-18 09:25:42

+0

@MMohsinNaeem我添加的代碼plz檢查出來 – Neha 2012-07-18 09:37:11

回答

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加入,因爲如果你開始下載不要再和再次啓動它。在AsyncTask's onPreExecute中製作爲true,並在onPostExecute中製作爲false

  • 現在你下載完成時,再在以前的列表中添加新的數據,而不是由side..using方法setList一邊。這是您在Scroll上遇到的崩潰的原因。你正在添加列表中的數據,但沒有調用notifyDataSetChanged();
  • 還有一件事你的第一次調用是在UI線程..? Thread