タイトルのように:AdapterViewに現在表示されているすべてのアイテムのリスト(配列)を取得する方法を知りたいです。
なんで?AdapterViewに表示されるオブジェクトは、ユーザーがAdapterViewを閉じた後にリスナーを解放する必要があります。アプリを最適化するためにそれを行う必要があります。
または、ビューの破棄時に実行される(オーバーライドできる)メソッドはありますか?
29779 次
2 に答える
31
OnScrollListenerを実装します
public class NewsCategoryDC extends Activity implements OnScrollListener {
listViewでOnScrollListenerを設定します
listView.setOnScrollListener(NewsCategoryDC.this);
そして、最初と最後の表示行を取得できます
@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
firstVisibleRow = listView.getFirstVisiblePosition();
lastVisibleRow = listView.getLastVisiblePosition();
/*Now you get the first and last visible rows, and you easily get the rows from first to last visible row and allocate resources to visible rows or deallocate resources to rows except visible rows..,.*/
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {}
これを試して..、。
そして、あなたが得た他の最良の方法を投稿してください、これは非常に有用で良い質問です..、。
ありがとう..、。
編集............................
onScroll()メソッドにコードを追加する
@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
int firstVisibleRow = listView.getFirstVisiblePosition();
int lastVisibleRow = listView.getLastVisiblePosition();
for(int i=firstVisibleRow;i<=lastVisibleRow;i++)
{
//Write your code here(allocation/deallocation/store in array etc.)
System.out.println(i + "=" + listView.getItemAtPosition(i));
}
}
于 2012-10-30T06:56:17.363 に答える
6
小さなヒントとして:
完全に表示されているすべての要素を取得したい場合(->下部または上部にあり、画面からほとんど外れている要素を期待します)、この投稿を参照してください:
于 2012-11-01T19:41:03.007 に答える