2016-10-04 1 views
-2

Initialement j'avais un ArrayList<Book> parfaitement fonctionnel. Mais, je voulais montrer ma liste de livres dans un menu PopUp, pour ce AlertDialog.Builder avec setMultiChoiceItems était le choix approprié que j'ai fait. Donc j'ai dû convertir ce ArrayList en CharSequence. Jusqu'ici tout va bien. Le problème vient maintenant: je veux montrer l'option (s) précédemment sélectionnée dans un RecyclerView, (déjà codé), mais j'ai besoin de ces getters et setters de mon objet. Comment cela peut-il être résolu?Comparer les différents types de ArrayList

(EDIT)

fab.setOnClockListener (new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     final ArrayList<Integer> bookSel = new ArrayLis(); 
     ArraList<Book> arrayBook = (ArrayList<Book>) bd.getBooks(); 

     final CharSequence[] cs = new CharSequence[arrayBook.size()]; 
     for (int i = 0; i < arrayBook.size(); i++) { 
      cs[i] = String.valueOf(arrayBook.get(i)); 
     } 

     final AlertDialog.Builder alertBuilder = new AlertDialog.Builder (getActivity()); 
     alertBuilder.setTitle("Books") 
     .setMultiChoiceItems(cs, null, new DialogInterface.OnMultiChoiceClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
       if (isChecked) { 
        bookSel.add(which); 
       } else if (bookSel.contains(which)) { 
        bookSel.remove(Integer.valueOf(which)); 
       } 
      } 
     }); 
     alertBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onCLick(DialogInterface dialog, int which) { 
       ArrayList<String> listAux = new ArrayList<>(); 
       for (int i = 0; i < bookSel.size(); i++) { 
        listAux.add(String.valueOf(cs[bookSel.get(i)])); 
       } 
       BookAdapter adp = new BookAdapter(getActivity(),/*send the object<Book>*/); 
       recyclerView.setAdapter(adp); 
      } 
     }); 
    } 
}); 

Répondre

0
String[] bookListAlert; 
boolean[] checkedBooks; 
ArrayList<String> bookNames = new ArrayList<String>(); 
List<Book> bookDetails = new ArrayList<Book>(); 
bookDetails = bookList.getlistOfBooks(); 
checkedColors = new boolean[bookDetails.size()]; 
    for (int i = 0; i < bookDetails.size(); i++) { 
     checkedBooks[i] = false; 
     strBookName= bookDetails.get(i).getBookName(); 
     bookNames.add(strBookName); 
    } 
     bookListAlert = bookNames.toArray(new String[access.size()]); 
AlertDialog.Builder builder = new AlertDialog.Builder(
      BookScreen.this); 

    builder.setMultiChoiceItems(bookListAlert, checkedColors, 
      new DialogInterface.OnMultiChoiceClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which, 
         boolean isChecked) { 

        ((AlertDialog) dialog).getButton(
          AlertDialog.BUTTON_POSITIVE).setEnabled(true); 
        boolean isCheckedBooks = true; 
        for (i = 0; i < checkedBooks.length; i++) { 
         if (!checkedBooks[i]) { 
          isCheckedBooks = false; 
         } else { 
          isCheckedBooks = true; 
          break; 
         } 
        } 
        if (!isCheckedBooks) { 

         ((AlertDialog) dialog).getButton(
           AlertDialog.BUTTON_POSITIVE).setEnabled(
           true); 

        } else { 
         ((AlertDialog) dialog).getButton(
           AlertDialog.BUTTON_NEUTRAL).setEnabled(
           false); 
        } 
       } 
      }); 
    builder.setCancelable(false); 
    builder.setTitle("Books"); 
    builder.setPositiveButton("DONE", 
     new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
       } 
    )}; 
+0

Si vous partagez votre code, il sera facile de vous aider. Merci – Bethan

+0

Ok. Je vais éditer maintenant. –