我有一个ListView,其中每个项目的视图是一个字符串(项目的名称)。但是我必须将许多其他数据与该项相关联:价格,大小,重量,税等。所以,我要创建一个名为Item的新Java类,然后创建列表中每个项目的对象。 / p>
我不知道实现这个的bext方法是什么。有两个明显的选择:
1)我可以简单地在任何Android视图之外创建数据结构,然后编写一个名为UpdateList()的方法,该方法获取此数据结构中每个项目的名称并将其放入ListView中。这个问题是一些数据被重复两次(原始数据结构和ListView的适配器),当你复制数据时,就会出现bug漏洞。
2)或者,我可以以某种方式将数据结构直接与ListView的适配器相关联,并让它弄清楚如何显示所显示的每个ListView条目的名称。这里的优点是您只有一个数据结构。但我不知道这在Android中是否可行,或者非常复杂。
使用Android应用程序执行此操作的首选方法是什么?
答案 0 :(得分:9)
使用ListView和Adapter选项会更好。您需要创建一个自定义ArrayAdapter
,以便按照您希望的方式从这些对象填充ListView
。
这项技术的优势在于您获得了一种视图回收机制,可以回收Views
内部的ListView
以减少内存。
简而言之你必须:
1。创建一个表示单行数据的对象。
2. :创建这些对象的ArrayList
。
3. 使用代码创建包含ListView的布局或将ListView添加到主布局。
4. :创建单行布局。
5。创建ViewHolder
,代表Views
的支持点,代表数据行的视觉方面。
6. :创建一个自定义ArrayAdapter
,根据您的需要填充行。
7。最后将此ArrayAdapter
分配给ListView
中的onCreate
。
您可以通过阅读我撰写的这篇博文来了解如何实现这一点:
答案 1 :(得分:1)
只需使用适配器。它更清洁。然后,当您使用getView()显示列表项时,可以检索所需的信息。见this example。