如何将第一个 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 中)?的主要内容,如果未能解决你的问题,请参考以下文章