web-dev-qa-db-ja.com

現在AdapterViewに表示されているアイテムを取得する方法は?

タイトルどおり:AdapterViewに現在表示されているすべてのアイテムのリスト(配列)を取得する方法を知りたいです。
なぜ? AdapterViewに表示されるオブジェクトは、ユーザーがAdapterViewを閉じた後にリスナーを解放する必要があります。アプリを最適化するためにそれを行う必要があります。
または、ビューの破棄時に実行される(オーバーライドできる)メソッドはありますか?

20

onScrollListenerを実装します

public class NewsCategoryDC extends Activity implements OnScrollListener {

そしてOnViewListenerをlistViewに設定します

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));
    }
}
29
MKB

小さなヒントとして:

完全に表示されているすべての要素を取得したい場合(->下部または上部にあり、画面からほとんど外にいる人を期待してください)、この投稿を見てください:

完全に表示されているListView-Itemsのみを表示

6
Kooki