1

我正在尝试在我的 ListView 中添加子项。我的 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);
4

2 回答 2

3

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

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

于 2013-03-22T20:53:35.293 回答
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));
于 2013-03-22T21:07:20.750 回答