如何从使用游标适配器存储在数据库中的listView中获取所选项?

时间:2013-08-15 09:24:32

标签: android listview

如何从ListView获取所选项目(复选框中的选定视图)? 我从Handler中的CursorAdapter获得了一些结果。

public class MyCursorAdapter extends CursorAdapter {

@SuppressWarnings("deprecation")
public MyCursorAdapter(Context context, Cursor c) {
    super(context, c);
    // TODO Auto-generated constructor stub
}

@Override
public void bindView(View view, final Context context, Cursor cursor) {
    TextView item=(TextView)view.findViewById(R.id.item_tv);
    CheckBox cb=(CheckBox)view.findViewById(R.id.flag_cb);

    item.setText(cursor.getString(cursor.getColumnIndex(cursor.getColumnName(1))));

    Log.d("Bind View", "Flag="+cursor.getString(cursor.getColumnIndex(cursor.getColumnName(2))));

    if(cursor.getString(cursor.getColumnIndex(cursor.getColumnName(1))).equalsIgnoreCase("true")){
        cb.setChecked(true);
    }else{
        cb.setChecked(false);
    }

    cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            DatabaseHelperSQL help=new DatabaseHelperSQL(context);
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked){
                Toast.makeText(context, "Check", Toast.LENGTH_LONG).show();
            }else{
                Toast.makeText(context, "unCheck", Toast.LENGTH_LONG).show();
            }
        }   

    });

}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    LayoutInflater inflater=LayoutInflater.from(parent.getContext());
    View retView=inflater.inflate(R.layout.every_row,parent,false);
    return retView;
}

}

1 个答案:

答案 0 :(得分:0)

这取决于您的具体需求:

如果您需要所选项目的ID,可以使用boolean[] selected,它将存储每个项目的状态。

如果您需要获得完全选定的项目,可以使用List<View> selected

加入onCheckedChanged
并在需要时返回