Android: Select items in a multi-select ListView inside AlertDialog

后端 未结 3 1203
-上瘾入骨i
-上瘾入骨i 2021-01-01 04:50

I am new to android development and struggling with how to select certain items in a listview hosted by an alertdialog. In the below code, lv.setItemChecked doesn\'t work as

3条回答
  •  鱼传尺愫
    2021-01-01 05:11

    I found the correct Solutions:

        public void alertMultipleChoiceItems(){
        final CharSequence[] dialogList = Symbollist.toArray(new CharSequence[Symbollist.size()]);
        HashSet uniqueValues = new HashSet<>(Symbollist);
        Symbollist.clear();
        for (String value : uniqueValues) {
            //... //Do something
            Symbollist.add(value);
        }
        AlertDialog.Builder builder = new AlertDialog.Builder(AddPackageStep3.this);
        selectedItems = new ArrayList();
        // set the dialog title
        boolean[] itemChecked = new boolean[selectedItems.size()];
    
        builder.setMultiChoiceItems(dialogList,null, new DialogInterface.OnMultiChoiceClickListener() {
    
                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
    
                        if (isChecked) {
                            // if the user checked the item, add it to the selected items
                            selectedItems.add(which);
                        }
    
                        else if (selectedItems.contains(which)) {
                            // else if the item is already in the array, remove it
                            selectedItems.remove(Integer.valueOf(which));
                        }
    
                        // you can also add other codes here,
                        // for example a tool tip that gives user an idea of what he is selecting
                        // showToast("Just an example description.");
                    }
    
                })
                // Set the action buttons
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {
    
                        // user clicked OK, so save the mSelectedItems results somewhere
                        // here we are trying to retrieve the selected items indices
                        String selectedIndex = "";
                        for(Integer i : selectedItems){
                            selectedIndex += i + ", ";
                        }
    
                        //showToast("Selected index: " + selectedIndex);
    
                    }
                })
    
                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {
                        // removes the AlertDialog in the screen
                    }
                })
                .show();
    
    }
    

提交回复
热议问题