3iL
3iL

Reputation: 2176

Pass arrayList to setMultiChoiceItems in dialog

I am implementing a simple dialog with a checked listview in it. This is what I've done so far:

CharSequence[] items = {"Brand A", "Brand B", "Brand C"};
    AlertDialog.Builder builder = new AlertDialog.Builder(StrengthOfDemandsView.this);
    builder.setTitle("Select Brands");
    final ArrayList seletedItems=new ArrayList();

    builder.setMultiChoiceItems(items, null,
            new DialogInterface.OnMultiChoiceClickListener() {
                // indexSelected contains the index of item (of which checkbox checked)
                @Override
                public void onClick(DialogInterface dialog, int indexSelected,
                                    boolean isChecked) {
                    if (isChecked) {

                        seletedItems.add(indexSelected);
                    } else{
                        seletedItems.remove(Integer.valueOf(indexSelected));
                    }
                }
            })

         .setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int id) {

        }
    })
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {

                }
            });

    dialog = builder.create();
    dialog.show();

PROBLEM:

Initially, I'm passing an Array to setMultiChoiceItems method and it works fine but how to pass an ArrayList instead of an array? Like this:

ArrayList<Products> brandList = new ArrayList<>();

Whenever I'm trying to pass an ArrayList to setMultiChoiceItems method it gives me this error:

Cannot resolve method 'setMultiChoiceItems(java.util.ArrayList<com.application.marketvisit.dataItem.Products>, null, anonymous android.content.DialogInterface.OnMultiChoiceClickListener)'

Upvotes: 2

Views: 3702

Answers (2)

Vikas singh
Vikas singh

Reputation: 3889

Try this...and let me know if it works..

 ArrayList<String> strBrandList = new ArrayList<String>();
   for (int i = 0; i < brandList.size(); i++) {
           strBrandList.add(brandList.get(i).getProductName())
   }

Upvotes: 0

Pavneet_Singh
Pavneet_Singh

Reputation: 37404

You need to pass a String array to AlertDialog.Builder#setMultiChoiceItemsso collect it as a String array

String arr = new String[brandList.size()];
for(int i=0 ; i< brandList.size();i++){
    arr[i] = brandList.get(i).getProductName();
   //getProductName or any suitable method
}

Upvotes: 4

Related Questions