package com.liuguangqiang.idaily.ui.adapter; import android.content.Context; import android.databinding.ViewDataBinding; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import com.liuguangqiang.idaily.databinding.ItemStoryBinding; import com.liuguangqiang.idaily.databinding.ItemStoryHeaderBinding; import com.liuguangqiang.idaily.domain.entity.BaseEntity; import com.liuguangqiang.idaily.domain.entity.Story; import com.liuguangqiang.idaily.domain.entity.StorySection; import com.liuguangqiang.support.widgets.recyclerview.adapter.AbsRVAdapter; import java.util.List; /** * Created by Eric on 15/6/6. */ public class StoryAdapter extends AbsRVAdapter<BaseEntity, StoryAdapter.StoryViewHolder> { private static final int ITEM_STORY = 0; private static final int ITEM_SECTION = 1; public StoryAdapter(Context context, List<BaseEntity> data) { super(context, data); } @Override public StoryViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == ITEM_STORY) return StoryViewHolder.createViewHolder(ItemStoryBinding.inflate(layoutInflater)); else return StoryViewHolder.createViewHolder(ItemStoryHeaderBinding.inflate(layoutInflater)); } @Override public void onBindViewHolder(StoryViewHolder holder, int position) { super.onBindViewHolder(holder, position); BaseEntity entity = data.get(position); if (getItemViewType(position) == ITEM_STORY) holder.bindData((Story) entity); else holder.bindSection((StorySection) entity); } @Override public int getItemViewType(int position) { if (data.get(position) instanceof StorySection) return ITEM_SECTION; return ITEM_STORY; } public static class StoryViewHolder extends RecyclerView.ViewHolder { public static StoryViewHolder createViewHolder(ViewDataBinding binding) { return new StoryViewHolder(binding.getRoot(), binding); } public StoryViewHolder(View view, ViewDataBinding binding) { super(view); itemView.setTag(binding); } public void bindData(Story story) { ItemStoryBinding binding = (ItemStoryBinding) itemView.getTag(); binding.setStory(story); binding.executePendingBindings(); } public void bindSection(StorySection section) { ItemStoryHeaderBinding binding = (ItemStoryHeaderBinding) itemView.getTag(); binding.setSection(section); binding.executePendingBindings(); } } }