web-dev-qa-db-ja.com

Android:リストビューに表示されている子の数を取得する

表示されているリストビューの子の数をカウントする方法はありますか?

いつでも変更できるデータベースにリンクされた情報を含むリストビューがあります。データベースが変更されると、リストビューを処理するuiクラスに通知するブロードキャストを送信します。次に、変更されたデータに関連する子要素が更新されます。リストビューの各アイテムにタグを付け、リストビューを繰り返して、ブロードキャストからタグに一致する行を見つけることで、これを実現しています。

目に見える子だけを繰り返し処理したい。表示されていないビューは、作成時に新しいデータを反映するため、手動で更新する必要はありません。現在、listView.getfirstVisiblePosition()からlistView.getChildCount()まで繰り返します。私は表示されている行の上にある行を調べないが、その下にある行も調べたくないので、これは何もないよりはましです。

Android開発者のリストビューページを確認しましたが何も見つかりませんでした。目に見える子の数を取得する方法を誰かが知っていますか?

ありがとう!

22
Chris

listView.getLastVisiblePosition()、これはあなたが探しているものですか?そうでない場合、子ビューによる反復...

int count = 0;

for (int i = 0; i <= listView.getLastVisiblePosition(); i++)
{
    if (listView.getChildAt(i) != null)
    {
        count++;  // saying that view that counts is the one that is not null, 
                  // because sometimes you have partially visible items....
    }
}
31

これは、表示される子の数をすばやく取得する方法です。

int visibleChildCount = (listView1.getLastVisiblePosition() - listView1.getFirstVisiblePosition()) + 1;
63
A. Abiri

上記のgreg7gkbのコメントを参考にしてください-誰かがこれを使用している場合に備えて、カウントが1つ減ることを指摘したいと思います。そのはず

(listView1.getLastVisiblePosition() - listView1.getFirstVisiblePosition()) + 1

したがって、最後の表示が8で、最初の表示が5の場合、(8-5)+1 = 4 表示:5、6、7、および8

A. Abiriがそのすぐ下にあるようです。

4
Laura