4

我有一个 ListView,其中每个项目的视图都是一个字符串(项目的名称)。但是我必须将很多其他数据与该项目相关联:价格、尺寸、重量、税金等。因此,我要创建一个名为 Item 的新 Java 类,然后为列表中的每个项目创建一个对象。

我不知道哪个是最好的实现方式。有两个明显的选择:

1) 我可以简单地在任何 Android 视图之外创建数据结构,然后编写一个名为 UpdateList() 的方法,该方法获取此数据结构中每个项目的名称并将其放入 ListView。这样做的问题是某些数据被复制了两次(原始数据结构和 ListView 的适配器),当您复制数据时,就会出现错误的可能性。

2) 或者,我可以以某种方式将数据结构直接与 ListView 的适配器相关联,并让它弄清楚如何为显示的每个 ListView 条目显示名称。这里的优点是您只有一个数据结构。但是我不知道这在Android中是否可行,或者非常复杂。

使用 Android 应用程序执行此操作的首选方式是什么?

4

2 回答 2

9

使用 ListView 和 Adapter 选项会更好,您需要创建一个自定义项以按照您想要的方式从这些对象ArrayAdapter中填充一个。ListView

这种技术的优点是您获得了一种视图回收机制,该机制将回收Views您的内部ListView以减少内存消耗。

简而言之,您必须:

1.创建一个代表单行数据的对象。

2.创建ArrayList这些对象中的一个。

3.创建一个包含 ListView 的布局或使用代码将 ListView 添加到您的主布局。

4.创建单行布局。

5.创建一个ViewHolder从 的角度代表数据行的视觉方面Views

6.创建一个自定义ArrayAdapter,将根据您的需要填充行。

7.最后把这个分配ArrayAdapter给你的ListViewin onCreate

您可以通过阅读我写的这篇博客文章来了解如何实现这一点:

创建自定义 ArrayAdapter

于 2013-04-10T18:06:33.830 回答
1

只需使用适配器。干净多了。然后,您可以在使用 getView() 显示列表项时检索所需的信息。请参阅此示例

于 2013-04-10T18:02:42.360 回答