如何在ListView中添加子项

时间:2013-03-22 20:47:18

标签: android

我试图在ListView中添加subItems。 我的listView应该通过电子邮件组织项目及其子机构的机构,但是使用以下代码我只是添加了项目,如何在其上添加我的子项目?我尝试了很多东西,但它没有用。

        List<Login> listEmails = JsonUtil.getAllEmails(json);

        ArrayList<String> emails = new ArrayList<String>();

        ArrayList<String> institutions = new ArrayList<String>();

        for (Login loginObj : listEmails) {

            emails.add(loginObj.getEmailAndress());
        }

        for (Login loginObj : listEmails) {

            institutions.add(loginObj.getInstitution());
        }

        ArrayAdapter<String> adapter;

        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, emails);

        emailListView.setAdapter(adapter);

2 个答案:

答案 0 :(得分:3)

您需要一个包含两个文本视图的自定义适配器,并在其getView()方法中为每个文本视图设置适当的数据。

此外,现在您只向{} 1}数组传递适配器,您还需要一个不同的结构来包含emails

答案 1 :(得分:0)

正确的方法是为每个项目创建一个HashMap:查看下面的代码:

List<Login> listEmails = JsonUtil.getAllEmails(json);

                ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>(listEmails.size());

                for (Login loginObj : listEmails) {

                    HashMap<String, String> item = new HashMap<String, String>();
                    item.put("email", loginObj.getEmailAndress());
                    item.put("institution", loginObj.getInstitution());

                    list.add(item);
                }

                String[] from = new String[] { "email", "institution" };

                int[] to = new int[] { android.R.id.text1, android.R.id.text2 };

                int nativeLayout = android.R.layout.two_line_list_item;

                emailListView.setAdapter(new SimpleAdapter(this, list, nativeLayout , from, to));