0

Listview でアプリケーションを開発しています。私のアプリは次のようになります: リストビューを 10 番目の位置でスクロールすると、最初は 10 個の要素が表示され、次の 10 個の項目の読み込みが開始されます。次の 10 個のアイテムをロードしている間、リストビューの前のアイテムとやり取りする必要があります。読み込み中に進行状況ダイアログを表示したくありません。リストビューのデータをロードするときに問題に直面していますが、すべてを行いました。リストビューがアイテムの読み込みを開始すると、リストビューがハングします。上にも下にも移動しません。速くスクロールすると、ダイアログを強制的に閉じることが表示されます。

誰でもこの問題を解決するのを手伝ってもらえますか??

どんな助けでも大歓迎です。

ありがとう

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は、ダウンロードを開始する場合と同じように、余分なものが追加されます。make はtrueyour にAsyncTask's onPreExecuteあり、 make itfalseはにありますonPostExecute

  • ダウンロードが完了したら、前のリストに新しいデータを追加しますsetList。これが、直面しているクラッシュの原因ですScroll。リストにデータを追加していますが、呼び出していませんnotifyDataSetChanged();
  • そして、あなたの最初の呼び出しはUIスレッド上にあります..? そのリクエストも移動しますThread
于 2012-07-18T10:02:49.697 に答える