本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

android - 带有 HashMap 的 ListView 适配器无法正确显示

发布于2024-11-10 22:27     阅读(443)     评论(0)     点赞(25)     收藏(5)


我正在尝试创建一个非常基本的 ListView 对话框,其中每个项目都有一个子标题。为此,我尝试使用 simple_list_item_2 布局和一个 List(Map(String,String) 适配器。代码如下:

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

如您所见,四个文本字符串中只有一个被显示出来。这是怎么回事呢?


解决方案


您正在基准而不是基准2上设置值。

   // 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);


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/693741/a6ca016307a7a71e075f/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

25 0
收藏该文
已收藏

评论内容:(最多支持255个字符)