0

選択したチェックボックスを削除しようとしています。以下のこのコードの後で何をすべきかわかりません。単純なカーソルアダプターを使用しています。また、すべてのチェックボックスを選択および選択解除する方法も知りたいです。私はすべてを調査しましたが、答えが見つかりません。私は3日間立ち往生しています。また、以下のコードが必要な正しいパスであるかどうかもわかりません。

public class SecondCheckedListView extends ListActivity {

 private Cursor mCursor;
 private Long mRowId;
DBAdapter db = new DBAdapter(this);


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.secondcheckedlistview);
    db.open();
    fillData();




 }

private void fillData() {
    mCursor = db.getAllContacts();
   startManagingCursor(mCursor);
   String[] from = new String[]{DBAdapter.KEY_FIRSTNAME, DBAdapter.KEY_LASTNAME}; 
   int[] to = new int[]{R.id.textView1, R.id.textView2};
   SimpleCursorAdapter d = 
           new SimpleCursorAdapter(this, R.layout.rowcheckedlistview, mCursor, from, to);
       setListAdapter(d);


}

public class MyAdapter extends SimpleCursorAdapter {

    private final Context mContext;
    private final int mLayout;
    private final Cursor mCursor;
    private final int mNameIndex;
    private final int mIdIndex;
    private final LayoutInflater mLayoutInflater;

    private final class ViewHolder {
            public TextView firstname;
            public TextView lastname;
            public CheckBox cBox;
    }
    public MyAdapter(Context context, int layout, Cursor c,
            String[] from, int[] to) {
        super(context, layout, c, from, to);
        this.mContext = context;
        this.mLayout = layout;
        this.mCursor = c;
        this.mNameIndex = mCursor.getColumnIndex(DBAdapter.KEY_FIRSTNAME);
        this.mIdIndex = mCursor.getColumnIndex(DBAdapter.ROW_ID);
        this.mLayoutInflater = LayoutInflater.from(mContext);

    }

    @Override
    public View getView(final int pos, View convertView, ViewGroup parent) {
        if (mCursor.moveToPosition(pos)) {
            ViewHolder viewHolder;
            if(convertView == null) {
                convertView = mLayoutInflater.inflate(mLayout, null);

                viewHolder = new ViewHolder();
                viewHolder.firstname = (TextView)     convertView.findViewById(R.id.textView1);
                viewHolder.lastname = (TextView) convertView.findViewById(R.id.textView2);
                viewHolder.cBox = (CheckBox) convertView.findViewById(R.id.bcheck);

                convertView.setTag(viewHolder);

            }else{
                viewHolder = (ViewHolder) convertView.getTag();
            }
            String firstname = mCursor.getString(mNameIndex);
            String rowId = mCursor.getString(mIdIndex);


}
        return convertView;
    }



    }

}

4

1 に答える 1

0

「削除」とは何ですか?リストビューからチェックボックスを削除しますか? viewHolder.RemoveView(cBox); のようなことをする必要があるかもしれません。

すべてのチェックボックスを選択/選択解除する場合は、おそらく他のボタンまたはチェックボックスに基づいてそれを行う必要があります。私は次のように別のチェックボックスでそれを行います:

private OnClickListener setSelectAllListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        selectAllTouched = true;
        if (!selectAllCheck.isChecked()) {
           selectAll = false;
           studs.notifyDataSetChanged();
         }
        else {
           selectAll = true;
           studs.notifyDataSetChanged();
        }
    }
}; 

そして、リストビューの各チェックボックスを処理するカスタムアダプターで、これを使用します:

 if (selectAllTouched) {
            if(selectAll){
                holder.here.setChecked(true);
                itemCheckedHere.set(pos, true);
                int who= new Integer(holder.text2.getText().toString());
                mDbHelper.updateAttend(who, classnum, ATTEND, 1, attendDate );
            }
            else{
                holder.here.setChecked(false);
                itemCheckedHere.set(pos, false);
                int who = new Integer(holder.text2.getText().toString());
                mDbHelper.updateAttend(who, classnum, ATTEND, 0, attendDate );
            }
        }

スパース配列 itemCheckedHere を使用してすべてのチェック ボックスの値を保持し、スクロールしても再起動されたビューの値が変更されないようにしました。

于 2012-08-29T10:43:02.527 に答える