2016-09-09 5 views
0

私は2つの異なるAPIを として解析し、それらを単一のListViewに取り込む必要があるプロジェクトに取り組んでいます。私は、解析されたデータを保持するために2つのsetter-getterクラスを作成しました。単一のListViewに2つの異なるapi値を設定する

  1. CategoryDe​​tails
  2. VideoItem

両方のクラスは異なる別の変数があります。 ここで私はそれらをマージしようとしています。私の知る限りは、異なるモデルのためのビューが右、異なっている必要があります見ることができるよう

addall(java.util.collection extends java.lang.string) in arraylist cannot be applied to (java.util.arrayList)

+0

オブジェクトの両方のパラメータを含むモデルを作成しないのはなぜですか? – Ricardo

+0

は、両方のarraylistが異なるタイプを持っているためです。 –

+0

@RicardoBarroca、はい私はそれについても考えましたが、結果をランダムにリストに表示したいとは思っていません。 2〜3回の通常の投稿の後に動画フィードを表示することを意味します。 – Devraj

答えて

0

:私はそれらをマージしようとしていた場合

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) 

、私はエラーを取得していますか?

私は以下を行います。

1)のListViewItemためのインタフェース作成:

public interface MyListViewItem {} 

2))、すなわち

public class CategoryDetails implements MyListViewItem {...} 

public class VideoItem implements MyListViewItem {...} 

3、CategoryDetails及びVideoItemにこのインタフェースを実装しArrayAdapter<MyListViewItem>

4を作成した)が含まれるArrayList<MyListViewItem>に合格すべてのタイプの全商品

5)は、複数のモデルタイプのアダプタを作成して使用する方法を説明しています。それはhere

内部アダプタのコード、あなたがモデルからいくつかの情報にアクセスしたいとき、あなたはすなわち、クラス名を確認してから、対応する型にキャストする必要がありますが示されているように:

MyListViewItem item = getItem(position); 
if (item instanceof CategoryDetails) { 
    CategoryDetails details = (CategoryDetails) item; 
    // do stuff 
} else if (item instanceof VideoItem) {... //you got idea } 

はそれが役に立てば幸い

+0

このインターフェイスは何ですか?私がコールバックをしたいときやクラスに何かを返すときにインターフェイスを使うことを知っているもの。 – Devraj

+0

私はアダプタクラスを完全に理解していましたが、そのインタフェース部分です。 – Devraj

+0

アダプタには、通常は1つのリスト(ArrayList)を渡すことができます。 ArrayListには、1つの型の項目のみを含めることができます。したがって、これらのアイテムが同じインターフェイスを実装していない限り(または同じクラスを拡張しない限り)、CategoryDe​​tailsとVideoItemを同時に含むことはできません。 – krossovochkin

関連する問題