2016-10-27 12 views
2
final List <CharSequence> checkedsurveylist = new ArrayList <CharSequence>(); 
final JSONArray jsonArray = new JSONArray(response); 
final boolean[] checkedItems = new boolean[jsonArray.length()]; 
for (int i = 0; i < jsonArray.length(); i++) { 
    JSONObject obj = (JSONObject) jsonArray.get(i); 
    String syncstatus = ""; 
    if (obj.get("syncstatus").toString().matches("1")) { 
    syncstatus = "Not yet synchronized"; 
    checkedItems[i] = false; 
    } else if (obj.get("syncstatus").toString().matches("2")) { 
    syncstatus = "Synchronized"; 
    checkedItems[i] = true; 
    } 
    checkedsurveylist.add("(" + obj.get("sysid").toString() + ")" + obj.get("surveytitle").toString() + " - " + syncstatus); 
} 


System.out.println("checkedItems " + checkedItems); 
final List <String> mSelectedItems = new ArrayList <String>(); 
final List <Integer> mSelectedItemsindex = new ArrayList <Integer>(); 
AlertDialog.Builder builder = new AlertDialog.Builder(Connect_server.this); 
builder.setTitle("Survey List") 
    .setMultiChoiceItems(checkedsurveylist.toArray(new CharSequence[checkedsurveylist.size()]), checkedItems, 
    new DialogInterface.OnMultiChoiceClickListener() { 


     @Override 
     public void onClick(DialogInterface dialog, 
     int which, boolean isChecked) { 

     checkedsurveylist.toArray()[which] = isChecked; 
     // Get the current focused item 
     String currentItem = checkedsurveylist.get(which).toString(); 

     // Notify the current action 
     Toast.makeText(getApplicationContext(), 
      currentItem + " " + isChecked, Toast.LENGTH_SHORT).show(); 
     if (isChecked) { 

      mSelectedItems.add(checkedsurveylist.get(which).toString()); 
      mSelectedItemsindex.add(which); 
     } else if (mSelectedItems.contains(which)) { 
      mSelectedItemsindex.remove(Integer.valueOf(which)); 

      mSelectedItems.remove(Integer 
      .valueOf(which)); 
     } 
     } 
    }); 
// Set the positive/yes button click listener 
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
    // Do something when click positive button 
    System.out.println("asdasdasd " + mSelectedItemsindex.size()); 
    for (int i = 0; i < mSelectedItemsindex.size(); i++) { 
     System.out.println("asdasdasd " + checkedsurveylist.get(i).toString()); 
    } 

    } 
}); 

これは、アラートダイアログボックスでチェックボックスを使用してリストを作成するためのコードです。それは複数の選択を持つことができます。私の問題は、デフォルトチェックボックスの値を取得できることです。チェックボックスがユーザーによって手動でチェックされている場合にのみ値を取得できます。それはデフォルトでチェックすることである場合は、チェックボックスの値を取得する方法アラートダイアログのチェックボックスのデフォルト値を取得する方法

Update

ListView lv = ((AlertDialog) dialog).getListView(); 
    System.out.println("asd" + "pos = " + lv.getCheckedItemPosition()); 
    System.out.println("asd" + "which = " + which); 

は、私はこれを使用しますが、[OK]ボタンをクリックするだけではなく、私は位置に-1を取得し、-1れているリスト項目とAlertDialog

+0

CheckBoxのインスタンスで 'isChecked()'を呼び出しますか? – Blackbelt

+0

@Blackbelt –

+0

'for'ループの' ArrayList'sに事前チェック項目を追加するだけではどうですか? 'AlertDialog#getListView()。getCheckedItemPositions()'は、チェックされた位置で 'SparseBooleanArray'を返します。 –

答えて

1

は、デフォルトを得ることができますgetListView()方法を用いてListViewとする。

複数選択モードのListViewでは、getCheckedItemPositions()は、チェックされた項目でSparseBooleanArrayを返します。

一緒にそれらを入れて、あなたは上映で確認も含めて選択した項目の全てを取得することができます。

+0

マイク1つのより多くの質問は、各リスト項目の属性データを追加するための方法ですが、このOPを閉じることができるように 'あなたは答えとしてそれを投稿することができます。リストには表示されませんが、チェックされた項目を選択するとアクセスできるデータの例です。たとえば '.setTag()'を追加しますか? –

+1

まあ、直接ではありません。私がやることはおそらく、 'CharSequence'を実装するシンプルなカスタムクラスを作成し、' setTag() '/' getTag() 'メソッドとフィールドを追加し、そのクラスを' checkedsurveylist'に使用することです。 'toString()'メソッドがあなたが今リストに追加している連結された 'String'を返す限り、UIが行く限りは透明な変更になります。 –

+0

Mike happy coding mateありがとうございます。 –

関連する問題