Android-具有两个视图项的ListView适配器

Android-具有两个视图项的ListView适配器,android,listactivity,Android,Listactivity,我是Android编程新手,两天来我一直处于一种似乎无法解决的境地。 我有一个ListActivity,它应该填充两个几乎没有相似性的不同视图。到目前为止,我一直使用MergeAdapter,它运行良好,但我的结果如下: 适配器1,适配器2。我没有能力改变列表中项目的顺序。 我的问题是:是否可以创建一个适配器,它包含两个视图的项而不是两个视图的项,这样我就可以按输入方式对项进行排序? 为了简单起见,我得到了这两个项目的ArrayList,每个项目都有“int position”,因此我可以将它们

我是Android编程新手,两天来我一直处于一种似乎无法解决的境地。
我有一个ListActivity,它应该填充两个几乎没有相似性的不同视图。到目前为止,我一直使用MergeAdapter,它运行良好,但我的结果如下: 适配器1,适配器2。我没有能力改变列表中项目的顺序。 我的问题是:是否可以创建一个适配器,它包含两个视图的项而不是两个视图的项,这样我就可以按输入方式对项进行排序? 为了简单起见,我得到了这两个项目的ArrayList,每个项目都有“int position”,因此我可以将它们插入到按位置排序的列表中。
编辑:我曾尝试扩展BaseAdapter,但我再次需要两个适配器,正如我在线阅读的那样,但如果我这样做,我将无法控制列表中某个项目的位置。 我希望这次我更清楚了。 欢迎任何回复。

谢谢。

您可以将BaseAdapter子类化并使用以下方法:

getViewTypeCount()
应返回适配器支持的不同行类型的数目
getItemViewType()
是实现特定行应具有哪种视图类型的“决策”的地方。例如,如果
getViewTypeCount()
返回3,则
getItemViewType()
方法应返回0、1或2

您可以在getView中使用此选项为不同的行类型充气/创建不同的布局

编辑:


因为它是一个自定义适配器,所以您可以用对数据有意义的任何方式实现它。如果您可以创建一个适合您需要的数据结构,那么只需使适配器能够使用它即可。在最坏的情况下,您可能只有一个对象数组(或列表),并且必须使用
instanceof
来执行决策工作。

是的,您可以扩展
BaseAdapter
来创建您自己的自定义适配器,覆盖
getView()
并在其中执行所有操作。您能解释一下吗?正如我所说的,我有两种观点。item1.xml和item2.xml。我该怎么做才能在一个列表中同时使用这两个选项来控制位置?实现getviewtypecount可以返回两个。在getItemViewType中,项目1返回0,项目2返回1。然后,您就可以实现getView,而不必担心在两种类型之间进行转换。就这些了,它起作用了!我扩展了BaseAdapter,并使用instanceof来进行决策。非常感谢你!