2016-12-05 3 views
0

alertdialogにチェックボックスを表示しています。ユーザーが[OK]をクリックすると、PHP、Java、JSONを選択したようにトーストが表示されます。今、IDを表示しています。どのように値を取得できますか?トーストにarraylistの値を表示するにはどうすればいいですか?

Dialog dialog; 
    final String[] items = {" Objective C", " JAVA", " JSON", " C#", "PHP"}; 
    final ArrayList itemsSelected = new ArrayList(); 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle("Select Languages you know : "); 
    builder.setMultiChoiceItems(items, null, 
      new DialogInterface.OnMultiChoiceClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int selectedItemId, 
            boolean isSelected) { 
        if (isSelected) { 
         itemsSelected.add(selectedItemId); 
        } else if (itemsSelected.contains(selectedItemId)) { 
         itemsSelected.remove(Integer.valueOf(selectedItemId)); 
        } 
       } 
      }) 
      .setPositiveButton("Done!", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 
        //Your logic when OK button is clicked 
        Toast.makeText(MainActivity.this,"You've selected "+itemsSelected,Toast.LENGTH_SHORT).show(); 
       } 
      }) 
      .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 
       } 
      }); 
    dialog = builder.create(); 
    dialog.show(); 

[UPDATE]解決策は見つかりましたが、理想的ではないようです。今のところ、次のコードを追加して作業しています。

String one=""; 
        String two=""; 
        String three=""; 
        String four=""; 

        String zero=""; 
        if (s.contains("0")) 
        { 
         zero="Obj C "; 
        } 
        if (s.contains("1")) 
        { 
         one="JAVA "; 
        } if (s.contains("2")) 
        { 
         two="JSON "; 
        } if (s.contains("3")) 
        { 
         three="C# "; 
        } if (s.contains("4")) 
        { 
         four="PHP "; 
        } 
+0

IDは、MuliChoiceDilaogを作成するために使用した配列内の位置です! (その項目[ID]はここにあります)。 –

+0

詳しく説明してください。私はそれを得ることができませんでした。 –

+0

itemsSelectedの内容を見ると、選択されたitems []のインデックスです。 – emhomm4

答えて

0

あなたのコード

new DialogInterface.OnMultiChoiceClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int selectedItemId, 
            boolean isSelected) { 
        if (isSelected) { 
         **itemsSelected.add(selectedItemId);** 
        } else if (itemsSelected.contains(selectedItemId)) { 

itemsSelected.add(selectedItemId)のこの部分は、単にあなたのArrayListにIDを追加します。あなたはIDを追加したくありません。正確な値を追加したいので、Items配列には表示する必要がある値が含まれているので、itemsSelected.add(items [selectedItemId])のようなものを単純に使用できます。 arraylistに正しい値を入れたら、itemsSelected.toString()などを使ってトーストを表示します。他のすべての小切手も処理する必要があります。

関連する問題