0

我是 Android 编程的新手,我陷入了两天似乎无法解决的情况。
我有一个 ListActivity 应该填充两个几乎没有相似性的不同视图。到目前为止,我一直在使用 MergeAdapter,它运行良好,但我的结果是这样的:Adapter1,Adapter2。而且我无法更改列表中项目的顺序。我的问题是:是否可以创建一个适配器来保存两个视图的项目而不是两个视图的适配器,所以我将按照我输入它们的方式对我的项目进行排序?为简单起见,我得到了这两个项目的 ArrayList,每个项目都有“int position”,所以我可以将它们插入到按位置排序的列表中。
编辑:我尝试过扩展 BaseAdapter,但我再次需要两个适配器,因为我在网上阅读过,但如果这样做,我将无法控制列表中某个项目的位置。我希望我这次更清楚。欢迎任何回应。
谢谢你。

4

1 回答 1

2

您可以继承 BaseAdapter 并使用以下方法:

getItemViewType(int position)

getViewTypeCount()

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

您可以在 getView 内部使用它来为不同的行类型膨胀/创建不同的布局。

编辑:

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

于 2013-07-18T15:56:51.210 回答