2013-10-19 41 views
1

我正在嘗試使用ArrayAdapter創建AlertDialog以顯示用戶選擇表單(單選)的項目列表。但是,我想顯示先前選擇了哪個項目。由於選擇一個項目會自動關閉對話框,我的想法是爲先前選擇的項目設置自定義背景顏色。下面就是我希望達到的樣機:AlertDialog適配器上的自定義行背景顏色

enter image description here

我目前的代碼是這樣的:

private void showCustomAlert(int alertNumber, int parentTaskId) { 
    Log.w(LOGTAG, showCustomAlert);   
    int alertNumberID = Integer.parseInt(task1_id); 
    if (alertNumber==2) alertNumberID = Integer.parseInt(task2_id); 
    else if (alertNumber==3) alertNumberID = Integer.parseInt(task3_id); 
    else if (alertNumber==4) alertNumberID = Integer.parseInt(task4_id); 

    AlertDialog.Builder builderSingle = new AlertDialog.Builder(thisActivity); 
    builderSingle.setIcon(R.drawable.icon); 
    builderSingle.setTitle("Select Task:"); 


    final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(thisActivity, 
      android.R.layout.select_dialog_singlechoice); 
    for (int i=0; i<taskList.size(); i++) { 
     BT_item tmpItem = taskList.get(i); 
     if (BT_strings.getJsonPropertyValue(tmpItem.getJsonObject(),"task_parent","").equalsIgnoreCase(parentTaskId + "")) 
      arrayAdapter.add(BT_strings.getJsonPropertyValue(tmpItem.getJsonObject(),"task_name","")); 
    } 

    builderSingle.setNegativeButton("cancel", 
      new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
       } 
      }); 

    builderSingle.setAdapter(arrayAdapter, 
      new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int taskSelected) { 
        Log.w(LOGTAG, "task selected"); 

       } 
      }); 
    builderSingle.show(); 

} 
+0

在適配器上進行選擇和簡單地使視圖看起來被選中是有區別的。也許你可以找到具有你想要選擇的項目的視圖,並將該視圖標記爲選中狀態? –

+0

正確 - 我試圖讓它「看」選擇,而不是實際選擇它。這個想法是讓用戶根據需要更改他們的選擇,同時向他們展示他們先前選擇的內容。 – user2692264

回答

2

試試這個..而不是下面一行您builderSingle.setAdapter使用

   builderSingle 
        .setCancelable(true) 
        .setSingleChoiceItems(display_array, selected_pos, new DialogInterface.OnClickListener() { 

         @Override 
         public void onClick(DialogInterface dialog1, int pos) { 
          // TODO Auto-generated method stub 

          selected_pos = pos; 

          dialog.cancel(); 
         } 
        }) 

display_array是你的項目,你怎麼在對話框,在陣列顯示..

+0

謝謝 - 這會很好。 – user2692264