Android Listview中的复杂项

Android Listview中的复杂项,android,Android,我有一个ListView,其中每个项目的视图都是一个字符串(项目名称)。但我必须将很多其他数据与该项关联:价格、大小、重量、税收等。因此,我需要创建一个名为item的新Java类,然后为列表中的每个项创建一个对象 我不知道下一种方法是什么。有两个明显的选择: 1) 我可以简单地在任何Android视图之外创建数据结构,然后编写一个名为UpdateList()的方法,该方法获取该数据结构中每个项目的名称,并将其放入ListView。问题是有些数据被复制了两次(原始数据结构和ListView的适配器

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

我不知道下一种方法是什么。有两个明显的选择:

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

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


安卓应用程序的首选方式是什么?

只需使用适配器即可。它干净多了。然后,可以在使用getView()显示列表项时检索所需的信息。看

如果使用ListView和适配器选项会更好,您需要创建一个自定义的
ArrayAdapter
,以您想要的方式从此对象填充一个
ListView

这项技术的优点是,您可以获得一种视图回收机制,该机制将回收
列表视图中的
视图
,以节省内存

简而言之您必须:

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

2.创建这些对象的
ArrayList

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

4.创建单行布局

5.创建一个
ViewHolder
,该视图将从
视图的角度来表示数据行的视觉效果

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

7.最后将此
ArrayAdapter
分配给
onCreate
中的
列表视图

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


+1了解提供的步骤。是的,定制适配器就是这样做的。谢谢。我将尝试实现这一点。我无法让您的示例发挥作用。我准确地复制了它,收到了14个编译器错误。第一个是:AlertsAdapter.java:9:package josecgomez.com.android.dev.webservice.objects不存在[javac]import josecgomez.com.android.dev.webservice.objects.alerts;