0

私はListViewそれぞれListItemがそのCheckBoxレイアウトにある場所を持っています。がCheckBoxアクティブ化され、表示領域の外にスクロールすると、非アクティブ化されます。ListViewを再利用し、メソッドでViewsの状態を保存する必要があることは理解していますが、2 つの問題があります。CheckBoxesgetView()

4

1 に答える 1

1

String で setSelected を呼び出そうとしています。チェックボックスで呼び出す必要があります。変数 "list" は文字列の ArrayList です。

どちらの場合も、String 型で Checkbox メソッドを呼び出そうとしています。チェックボックスでそれらを呼び出す必要があります。

**編集

getView で行う必要があるのは次のとおりです。

  1. convertView が null でない場合は、convertView の子で適切なメソッドを呼び出して、その状態を「ビューホルダー」クラスに保存します。convertView IS null の場合、これを実行しようとしていますが、これは間違っています。
  2. 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 に答える