2017-01-08 40 views
0

ViewPager私は4つのうちの3つを持つFragmentがほぼ同じです。各画像の下に画像とテキストを含むGridLayoutが表示されます。私はすでにそれらのコードを完成させています。 Retrofitサービスを使用してサーバーからデータを取得します。オブジェクトは、デシリアライゼーションのために必要なだけの1〜2フィールド以外は同じです。オブジェクトの1の複数のほぼ同じフラグメントに同じアダプターを再使用

例:

public class TagsItem implements Serializable{ 

@SerializedName("post_id") 
private String postId; 

@SerializedName("account_id") 
private int accountId; 

private String tags; 
private String description; 
private String image; 
private String name; 

// removed getters/setters for brevity 

} 

私は、各クラスからの画像と名前を必要としています。

各アイテムごとに別々のレイアウトを必要としないので、それぞれのアダプタで同じアダプタを使用できる場合は、使用したいと思います。それはただのイメージと名前です。

アダプターをより一般的な形式で宣言して、使用可能にする方法は3つありますか?

今アダプタのコードは次のとおりです。

public class TagsAdapter extends RecyclerView.Adapter<TagsAdapter.ViewHolder> { 

private Context context; 
private List<TagsItem> dataset; 

public TagsAdapter(Context context) { 
    this.context = context; 
    dataset = new ArrayList<>(); 
} 

// more adapter code 

} 

あなたがこれを行うための最も簡単な方法は、一般的に作成することです名前はTagsAdapterで、データセットの種類がTagsItem

答えて

1

で見ることができるように異なるオブジェクトのすべてのインタフェース。あなたはあなたが必要とするすべての「イメージ」と「名前」プロパティで、それはおそらくこのようなものになるだろうと言うので:あなたの各クラスは、アダプタによって表示される

interface NamedImage { 
public String getImage(); 
public String getName(); 
} 

そのインターフェイスを実装します。

次に、TagItemの代わりにNamedImageを使用するようにadapaterを変更するだけです

関連する問題