如何将第一个 Arraylist 放在 Item 中,将第二个 Arraylist 放在 SubItem 中(在 ListView 中)?

Posted

技术标签:

【中文标题】如何将第一个 Arraylist 放在 Item 中,将第二个 Arraylist 放在 SubItem 中(在 ListView 中)?【英文标题】:How to put the first Arraylist in Item and the second Arraylist in SubItem (in ListView)? 【发布时间】:2019-10-20 03:26:06 【问题描述】:

好吧,我有一个数据库,并且使用 Cursor,我将数据库中的数据放入 ArrayLists 中。使用我的代码,我只能在 ListView 的 Item 中显示一个 ArrayList 的数据。但我想将第一个 ArrayList 放在 Item 中,将第二个 ArrayList 放在 SubItem 中。我需要做什么? (如果您需要,我可以提供更多信息或代码)

我已经尝试过类似问题的答案,但它们对我没有帮助。

myDB = new DatabaseHelper(this);

ArrayList<String> theNames = new ArrayList<>();
ArrayList<Integer> theYear = new ArrayList<>();

Cursor data = myDB.getListContents();

if (data.getCount() == 0)
    Toast.makeText(this, "There are no contents in this list!",Toast.LENGTH_LONG).show();
 else 
    while(data.moveToNext())
        theNames.add(data.getString(1));
        theYear.add(data.getInt(2));

        ListAdapter listAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,theNames);
        listView.setAdapter(listAdapter);
    

我希望在 ListView 的 Item 中看到第一个 ArrayList 的数据,在 ListView 的 SubItem 中看到第二个 ArrayList 的数据。

【问题讨论】:

您需要可展开的列表视图吗?要在项目点击时显示子项目? 我需要立即显示子项 【参考方案1】:

通常的做法是,您将创建一个具有两个属性的自定义类(例如,Person),名称和日期(生日?随便)。然后,当您处理游标时,为数据库中的每一行创建一个类的实例,并使用游标中的名称和日期填充它。然后,将该类实例添加到您的 ArrayList。然后,您需要创建一个扩展 BaseAdapter 的自定义适配器。您将在该适配器的构造函数中传递 ArrayList。然后,在 Adapter 代码中,重写 getView 方法,该方法传递一个位置,然后从 ArrayList 中获取人员实例,然后可以访问该人员的姓名和日期。这是更多的工作,但并不难。只需搜索构建一个自定义适配器,并构建一个自定义类,具体看看如何做。

【讨论】:

感谢您的回答!我现在正在努力。 哦,我做到了!非常感谢! 是的,这是首选的方式,而且非常强大!您可以通过这种方式完全控制您的列表。

以上是关于如何将第一个 Arraylist 放在 Item 中,将第二个 Arraylist 放在 SubItem 中(在 ListView 中)?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 ArrayList 中正确删除对象?

将第 n 项焦点放在 Jquery Mobile 列表视图上

如何将文本文件的第一行放在结束位置

如何将部分透明的图像放在 html 中的另一个图像上方?

冒泡排序详解

android如何删除gridview中的某个item