私はListView
それぞれListItem
がそのCheckBox
レイアウトにある場所を持っています。がCheckBox
アクティブ化され、表示領域の外にスクロールすると、非アクティブ化されます。ListView
を再利用し、メソッドでViews
の状態を保存する必要があることは理解していますが、2 つの問題があります。CheckBoxes
getView()
質問する
176 次
1 に答える
1
String で setSelected を呼び出そうとしています。チェックボックスで呼び出す必要があります。変数 "list" は文字列の ArrayList です。
どちらの場合も、String 型で Checkbox メソッドを呼び出そうとしています。チェックボックスでそれらを呼び出す必要があります。
**編集
getView で行う必要があるのは次のとおりです。
- convertView が null でない場合は、convertView の子で適切なメソッドを呼び出して、その状態を「ビューホルダー」クラスに保存します。convertView IS null の場合、これを実行しようとしていますが、これは間違っています。
- convertView が null の場合、それは再利用されたビューではなく、保存するものはありません。
基本的に、コードは次のようになります。
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
LayoutInflater inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflator.inflate(R.layout.listitem, parent, false);
} else {
//you should change viewHolder to simply store a boolean, rather than the entire checkbox. It should just store whether or not the checkbox was checked.
viewHolder = new ViewHolder();
viewHolder.text = (TextView) convertView.findViewById(R.id.listcontent);
viewHolder.isChecked = ((CheckBox) convertView.findViewById(R.id.cb)).isChecked();
//do whatever else here
}
return convertView;
}
于 2012-08-23T14:36:15.113 に答える