1

listView アイテムをカウントしようとしています。このコードを使用しています:

int count=0;
ListView listView = (ListView) findViewById(R.id.listView1);
 for(int i = 0; i  <= listView.getLastVisiblePosition(); i++)
         {
             if(listView.getChildAt(i)!= null)
             {
                 count++;  
             }
         }

Toast.makeText(getApplicationContext(), String.valueOf(count), Toast.LENGTH_SHORT).show();

listView がいくつかのレコードを表示するときに、COUNT 変数の値が常に 0 になるのはなぜですか?

4

3 に答える 3

3

すべての ListView アイテムの数を探している場合は、次の呼び出しを使用できます (アダプターが設定されていることを確認してください)。

listView.getCount();

表示されるアイテムの数が必要な場合は、これを試してください (表示されている ListView でのみ機能します)。

listView.getLastVisiblePosition()-listView.getFirstVisiblePosition();
于 2013-03-03T13:33:11.910 に答える
1

理由を説明させてください。このようなリストビューが表示されます。

ListView listView = (ListView) findViewById(R.id.listView1);

したがって、listviewには要素がなく、listviewを使用して最後の表示位置を取得しようとすると、listview listView.getLastVisiblePosition()はまだアダプタにバインドされていないため、常にゼロが返されます。つまり、最後の表示位置を取得する時点でlistviewは空です。にplace this code after binding Adapter to the listview

for(int i = 0; i  <= listView.getLastVisiblePosition(); i++)
         {
             if(listView.getChildAt(i)!= null)
             {
                 count++;  
             }
         }
于 2013-03-03T12:21:51.437 に答える