2013-07-08 40 views
1

我想創建一個非常基本的ListView對話框,其中每個項目都有一個子標題。爲此,我嘗試使用simple_list_item_2佈局和適配器作爲List(Map(String,String))。代碼如下:android-ListView適配器與HashMap顯示不正確

public static class StoreList extends DialogFragment { 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final List<Map<String, String>> data = new ArrayList<Map<String, String>>(); 

     // Dummy data 
     Map<String, String> datum = new HashMap<String, String>(); 
     datum.put("name", "Name1"); 
     datum.put("address", "USA"); 
     data.add(datum); 
     Map<String, String> datum2 = new HashMap<String, String>(); 
     datum.put("name", "Name2"); 
     datum.put("address", "CAN"); 
     data.add(datum2); 

     // Adapter for the ListView: 
     SimpleAdapter adapter = new SimpleAdapter(
       getActivity(), 
       data, 
       android.R.layout.simple_list_item_2, 
       new String[] {"name", "address"}, 
       new int[] {android.R.id.text1, android.R.id.text2}); 

     // Listener for the ListView: 
     DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       Intent i = new Intent(getActivity(), StoreActivity.class); 
       Map<String, String> listItem = data.get(which); 
       i.putExtra("name", listItem.get("name")); 
       i.putExtra("address", listItem.get("address")); 
       startActivity(i); 
      } 
     }; 

     // Build the ListView dialog: 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setTitle(R.string.storeListTitle); 
     builder.setAdapter(adapter, listener); 
     return builder.create(); 
    } 
} 

執行時,結果是這樣的:

http://i.imgur.com/8gkTECe.png

正如你所看到的,僅顯示四個文本字符串之一。這裏發生了什麼?

回答

1

你在基準而不是datum2設定值。

// Dummy data 
Map<String, String> datum = new HashMap<String, String>(); 
datum.put("name", "Name1"); 
datum.put("address", "USA"); 
data.add(datum); 
Map<String, String> datum2 = new HashMap<String, String>(); 
datum.put("name", "Name2"); //should be datum2 
datum.put("address", "CAN"); //should be datum2 
data.add(datum2); 
+0

另外,我覺得對於text1的文本顏色是白色的,這就是爲什麼你沒有看到「名稱」 – invertigo

+0

*捂臉*謝謝... – user2562424