Rajesh Rajaram
Rajesh Rajaram

Reputation: 3277

Get checked items from ListView with check box

I have a ListView with the CheckBox. I want to get the selected items from the ListView like example MyFiles application we selecting the multiple files with CheckBox and clicking the single delete button to delete all the files.

Upvotes: 3

Views: 5307

Answers (4)

FireDevil
FireDevil

Reputation: 129

Pretty simple solution which works for me:

Like this you can iterate through the ListView by using the already extisting ArrayList for the ArrayAdapter.

for(int i = 0; i < ArrayList.size();i++){

if((CheckBox)listView.getChildAt(i).findViewById(R.id.checkBox) != null){

    CheckBox cBox=(CheckBox)listView.getChildAt(i).findViewById(R.id.checkBox);

    if(cBox.isChecked()){
        Log.e("CB", ""+i);
    }
 }
}  

Upvotes: 2

Ram kiran Pachigolla
Ram kiran Pachigolla

Reputation: 21201

  boolean bulkflag = false;
  ListView reportslistview = (ListView) findViewById(android.R.id.list);
  public class MyAdapter extends SimpleAdapter {
    //private List<Table> tables;
    SharedPreferences prefs;
    private Activity activity;
    String val = "";

    //@SuppressWarnings("unchecked")
    public MyAdapter(Activity context, List<? extends Map<String, String>> tables, int resource, String[] from,
            int[] to) {
        super(context, tables, resource, from, to);
        //this.tables = (List<Table>) tables;
        activity    =   context;
    }

    public View getView(final int position, final View convertView, ViewGroup parent) {
        View row = super.getView(position, convertView, parent);
        if (row == null) 
        {
            LayoutInflater inflater = (LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(R.layout.reports_list, null);
        }       

        final CheckBox cBox=(CheckBox)row.findViewById(R.id.cb1);
        if(bulkflag)
        {
            cBox.setVisibility(View.VISIBLE);
        }
        else
        {
            cBox.setVisibility(View.GONE);
        }
        cBox.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                if(cBox.isChecked())
                {
                    selectedIds.add(recIdArr.get(reportslistview.getPositionForView(cBox)));
                    //System.out.println("position "+reportslistview.getPositionForView(cBox));
                }
                else
                {
                    selectedIds.remove(recIdArr.get(reportslistview.getPositionForView(cBox)));
                }
            }
        });
        return row;
    }
}

Checking ====>

 for(int i=0;i<selectedIds.size();i++)
 {
    System.out.println("delete multiple"+selectedIds.size()+" "+Integer.parseInt(selectedIds.get(i)));
 }

Declare selectedIds as a global variable

Upvotes: 3

NewLearner
NewLearner

Reputation: 116

Listview list;

ArrayAdapter<String> aa=new ArrayAdapter<String>this,android.R.layout.simple_list_item_multiple_choice,"Arraylist name");

list.setAdapter(aa);
list.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
     //code 
   }

Upvotes: 1

Furzel
Furzel

Reputation: 616

You need to add a OnClickListener to your checkboxes ( in your adapter ). This listener will have to keep up to date a list with the file you want to delete when the button is pressed.

Something like :

Checked => Add to the List
UnChecked => Remove from List

Upvotes: 1

Related Questions