0

アプリでカスタム水平ページングを設定し、5 ページとしましょう。各ページには、独自の ListView および ListView アダプターがあります。メインの Activity クラスには、各 ListView をハイドレートするために使用するカスタム オブジェクトの ArrayList があります。

したがって、私のメインクラスでは、次のように呼び出すことができます。

lvAdapter.setItems(items);

正常に動作します。

しかし、私が電話すると:

lvAdapter.clearItems();

ListView のアイテムをクリアしたいだけですが、実際には、そのオブジェクトの ArrayList からすべてのアイテムが削除されます。アダプターは参照のみを保持していると思いますか?

アダプタのクリア項目:

public void clearItems()
{
      this.items.clear();  //this will remove the object in the ArrayList
      this.notifyDataSetChanged();
}

私がやろうとしているのは、アクティブに表示されているページの setItems と、表示されていないページの clearItems です。一度にすべてのページをロードすると、メモリ不足のクラッシュに対処しているため...

4

1 に答える 1

1

そのためのアダプタ参照をクリアすることができますListViewlistView.setAdapter(null)

また、効率的な実装についても読みAdapterます。メモリフットプリントを削減するためにできることがいくつかあります。たとえば、ビューを適切にリサイクルするgetView(...)

于 2012-07-18T15:01:47.333 に答える