1

カスタムリストビュー(2つの画像と5つのテキストビューを含む)があり、最初にすべてのデータをロードしたときに200を超えるデータを表示する必要があり、同じ問題を解決するためにメモリ不足の例外が返されます。リストの最後の項目までリストビューを下にスクロールすると、アプリは再び同じリストにデータを追加します。リストビューにすべてのデータが表示されるまで、同じように実行されます。Endlessadapter は常に 10 秒ごとにアイテムをダウンロードするため、EndlessAdapter を使用するように言わないでください。しばらくするとメモリ不足も返されます。

前もって感謝します。

4

5 に答える 5

0

メモリ不足についてですが、5 つの imageView と 5 つの textView でメモリ不足になることはありません。おそらく、ある種のキャッシング ( softreference やLruCacheなど) を使用する代わりに、200 個の画像すべてを一緒に保存しているでしょう。アダプターの要点は、最小限のメモリを使用して大量のアイテムを表示することです (もちろん同時にではありません)。スクロールで十分にプレイすると、プレイストア(私はまだAndroidマーケットと呼んでいます)アプリでさえメモリキャッシュを使用していることがわかります...

リストビューの詳細については、これを見てください

画像の処理について詳しくは、こちらをご覧ください。

いずれにせよ、getView をトリガーとして (getCount() 値と比較して position パラメーターを使用して)、さらにアイテムをロードし、notifyDatasetChanged を使用してアダプターを更新する (および getCount() 値を更新する) ことができます。

于 2012-06-14T20:12:21.357 に答える
0

ユーザーがスクロールするたびに、ListView の最初の要素の位置を確認することをお勧めします。

ListView.getFirstVisiblePosition() 

リスト内の要素の量に近い場合は、リストの下部に項目を追加し、リストの上部から項目を削除できます。

于 2012-06-14T20:14:42.040 に答える
0

List http://developer.android.com/reference/java/util/List.htmlを addapter に割り当てると、 item.additem.removeを呼び出すことができます

于 2012-06-14T20:10:02.447 に答える
0

これを試してください

無限のリストビュー

ありがとう

于 2012-06-14T20:10:40.027 に答える
0

ユーザーが ExpandableListView を一度下にスクロールしたときに、より多くの要素をロードするために、このようなことをしました。

myListView.setOnScrollListener( new OnScrollListener() 
            {
                public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) 
                {
                    int lastVisibleElement = firstVisibleItem + visibleItemCount;
                    if(lastVisibleElement == totalItemCount)
                    {
                        //Load elements
                        myListAdapter.notifyDataSetChanged();
                    }
                }
于 2012-06-14T20:20:10.607 に答える