ListView
カスタムレイアウトに5つの子View
オブジェクト(4TextView
と1 )がCheckBox
あるカスタムレイアウトを使用するがあります。ただし、TextViews
バインドされてCheckBox
いるのは、データベースに対応するフィールドがありません。の目的は、CheckBox
表示されているアイテムのどれを「次のステップ」で処理したいかを識別することです。私はカスタムViewBinder
を使用してテキスト値を正しく割り当てています(DBからの値の一部が日付などであるため)。
ユーザーインターフェイスの一部は、リスト内の各アイテムのステータスを切り替えるために使用する「すべて」、「なし」、および「反転」の3つのボタンです。たとえば、[すべて]ボタンの場合、次のコードを使用してこれを実行します(これは正しくないことがわかっています。これを含めて、実行しようとしていることを示します)。
ListAdapter la = getListAdapter();
ListView lv = getListView();
int iCount = la.getCount();
for(int i=0; i<iCount; i++)
{
View vv = lv.getChildAt(i);
CheckBox cb = (CheckBox) vv.findViewById(R.id.ledgerItemCheckBox);
cb.setChecked(true);
}
これは、リスト内のアイテムの数がリストサイズを超えない限り正常に機能し、すべてのアイテムが常に表示されます。ただし、その数を超えると、'getChildAt'関数がnullを返すことがあります。これは、(正しく理解していれば)リスト内のすべてのアイテムを返すことを意図しておらず、表示されているアイテムのみを返すことを意味するためNullPointerException
です。
CheckBox
ビューが表示されていない場合でも、すべてのビューに適切に設定するにはどうすればよいですか?