我正在开展一个项目,我必须解析两个不同的api
并将它们填充到单个ListView
中。我创建了两个setter-getter类来保存解析后的数据。
两个类都有不同的变量。 现在我在这里尝试合并它们。
private ArrayList<CategoryDetails> categoryDetailsArrayList = new ArrayList<>();
private ArrayList<VideoItem> mVideoItems = new ArrayList<>();
/**
* API parsing and other coding stuff
**/
categoryDetailsArrayList.addAll(mVideoItems);
adapter = new Adapter(this, categoryDetailsArrayList)
当我尝试合并它们时,我收到错误:
arraylist中的addall(java.util.collection extends java.lang.string)无法应用于(java.util.arrayList)
答案 0 :(得分:0)
据我所知,不同模型的观点应该不同,对吗?
我会做以下事情。
1)为ListViewItem创建了接口:
public interface MyListViewItem {}
2)在CategoryDetails
和VideoItem
中实现了这个接口,即
public class CategoryDetails implements MyListViewItem {...}
public class VideoItem implements MyListViewItem {...}
3)创建了ArrayAdapter<MyListViewItem>
4)传递ArrayList<MyListViewItem>
,其中包含所有类型的所有项目
5)按照说明如何创建和使用具有多种类型模型的Adapter。就像显示here
一样在适配器内部代码中,当您想从模型中访问某些信息时,您需要检查类名,然后转换为相应的类型,即:
MyListViewItem item = getItem(position);
if (item instanceof CategoryDetails) {
CategoryDetails details = (CategoryDetails) item;
// do stuff
} else if (item instanceof VideoItem) {... //you got idea }
希望有所帮助