在单个ListView中填充两个不同的api值

时间:2016-09-09 10:24:56

标签: android arraylist

我正在开展一个项目,我必须解析两个不同的api 并将它们填充到单个ListView中。我创建了两个setter-getter类来保存解析后的数据。

  1. CategoryDe​​tails
  2. VideoItem
  3. 两个类都有不同的变量。 现在我在这里尝试合并它们。

     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)

1 个答案:

答案 0 :(得分:0)

据我所知,不同模型的观点应该不同,对吗?

我会做以下事情。

1)为ListViewItem创建了接口:

public interface MyListViewItem {}

2)在CategoryDetailsVideoItem中实现了这个接口,即

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 }

希望有所帮助