列表视图中的复杂项目

时间:2013-04-10 17:55:01

标签: android

我有一个ListView,其中每个项目的视图是一个字符串(项目的名称)。但是我必须将许多其他数据与该项相关联:价格,大小,重量,税等。所以,我要创建一个名为Item的新Java类,然后创建列表中每个项目的对象。 / p>

我不知道实现这个的bext方法是什么。有两个明显的选择:

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

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

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

2 个答案:

答案 0 :(得分:9)

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

这项技术的优势在于您获得了一种视图回收机制,可以回收Views内部的ListView以减少内存。

简而言之你必须:

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

2. :创建这些对象的ArrayList

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

4. :创建单行布局。

5。创建ViewHolder,代表Views的支持点,代表数据行的视觉方面。

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

7。最后将此ArrayAdapter分配给ListView中的onCreate

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

Create a Custom ArrayAdapter

答案 1 :(得分:1)

只需使用适配器。它更清洁。然后,当您使用getView()显示列表项时,可以检索所需的信息。见this example

相关问题