删除所选复选框

时间:2012-08-29 09:18:45

标签: android checkbox delete-row

我正在尝试删除所选的复选框。我不知道在下面的代码后该怎么做: 我正在使用一个简单的游标适配器。我也想知道如何选择和取消选中所有复选框。我研究了一切,但找不到任何答案。我被困了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;
    }



    }

}

1 个答案:

答案 0 :(得分: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来保存所有复选框的值,因此滚动不会更改已恢复视图的值。