我是Android编程的新手,我陷入困境两天,似乎无法解决。
我有一个ListActivity,应该填充两个几乎没有模拟性的不同视图。直到现在我已经使用了MergeAdapter并且它工作正常但我的结果是这样的:
适配器1,适配器2。而我无法更改列表中项目的顺序。
我的问题是:是否可以创建一个包含两个视图的项目的适配器而不是两个视图的适配器,所以我将按照输入的方式对我的项目进行排序?
为简单起见,我得到了这两个项目的ArrayList,每个都有“int position”,所以我可以将它们插入到按位置排序的列表中。
编辑:我已尝试扩展BaseAdapter,但我再次需要两个适配器,因为我在线阅读但如果我这样做,我将无法控制列表中项目的位置。
我希望这次我更清楚。
欢迎任何回复。
谢谢。
答案 0 :(得分:2)
您可以继承BaseAdapter并使用以下方法:
getViewTypeCount()
应返回适配器支持的不同行类型的数量。 getItemViewType()
是您实现特定行应具有哪种视图类型的“决定”的地方。例如,如果getViewTypeCount()
返回3,则getItemViewType()
方法应返回0,1或2。
您可以在getView中使用此内容为不同的行类型充气/创建不同的布局。
修改强>
由于它是一个自定义适配器,您可以以对数据有意义的任何方式实现它。如果您可以创建适合您想要的数据结构,那么只需使适配器能够使用它。在最坏的情况下,您可能只有一个对象的数组(或列表),并且必须使用instanceof
来执行决策工作。