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
正如你所看到的,僅顯示四個文本字符串之一。這裏發生了什麼?
另外,我覺得對於text1的文本顏色是白色的,這就是爲什麼你沒有看到「名稱」 – invertigo
*捂臉*謝謝... – user2562424