Search code examples
androidselecttoastmultiple-choice

ListView Mode is Multiple But does not select items


I have set my ListView choice mode as below:

 listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

but after selecting some items and trying to Toast selected items it show me empty string .

how I Toast Selected Items:

 String selected = "";
    int cntChoice = listView.getCount();

    SparseBooleanArray sparseBooleanArray = listView.getCheckedItemPositions();
    for (int i = 0; i < cntChoice; i++) {
        if (sparseBooleanArray.get(i)) {
            selected +=listView.getItemAtPosition(i).toString() + "\n";
        }
    }
    Toast.makeText(getApplicationContext(),selected,Toast.LENGTH_SHORT).show();

I have set Listener for convert view on adapter and the problem is that

so is it possible to manage it ?

i mean is it possible to set item selected on convert view listener?


Solution

  • the problem is that when i have click listener for convert view it does not set automatically selected items , so i need to do it manually

    for that we need a Map to store selected items with their position

    private Map<Integer, String> selectedItems=new HashMap<Integer,String>;
    

    and so we should do this on adapter:

     convertView.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    if (!selectedItems.containsKey(position))
                        selectedItems.put(position, holder.text.getText().toString());
                    else
                        selectedItems.remove(position);
                }
            });
    

    and by calling this get item selected text:

     public String getSelectedItems() {
        Iterator<Integer> iterator = selectedItems.keySet().iterator();
        String selected = "";
        while (iterator.hasNext()) {
            int position = iterator.next();
            selected += selectedItems.get(position) + "\n";
        }
        return selected;
    }