2016-10-04 14 views
-2

最初はArrayList<Book>が完全に機能していました。しかし、私はポップアップメニューで本のリストを見せたいと思っていました。これはAlertDialog.BuildersetMultiChoiceItemsが私が作った適切な選択肢でした。だから私はこのArrayListCharSequenceに変換しなければならなかった。ここまでは順調ですね。問題は次のようになります:RecyclerViewで以前に選択したオプションを表示したいのですが(すでにコード化されています)、オブジェクトのgetterとsetterが必要になります。どのようにこれを解決することができますか?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); 
      } 
     }); 
    } 
}); 

答えて

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

あなたのコードを共有している場合、あなたを助けるために簡単になります。ありがとう – Bethan

+0

私は今編集します。 –

関連する問題