package com.wangdaye.mysplash.common.ui.adapter;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.wangdaye.mysplash.R;
import com.wangdaye.mysplash.common.i.model.AboutModel;
import com.wangdaye.mysplash.common._basic.MysplashActivity;
import com.wangdaye.mysplash.about.presenter.CreateAboutModelImplementor;
import com.wangdaye.mysplash.about.view.holder.AppHolder;
import com.wangdaye.mysplash.about.view.holder.CategoryHolder;
import com.wangdaye.mysplash.about.view.holder.HeaderHolder;
import com.wangdaye.mysplash.about.view.holder.LibraryHolder;
import com.wangdaye.mysplash.about.view.holder.TranslatorHolder;
import java.util.List;
/**
* About adapter.
*
* Adapter for {@link RecyclerView} to show {@link AboutModel}.
*
* */
public class AboutAdapter extends RecyclerView.Adapter<AboutAdapter.ViewHolder> {
private MysplashActivity a;
private List<AboutModel> itemList;
/**
* Basic ViewHolder class for {@link AboutAdapter}.
* */
public static abstract class ViewHolder extends RecyclerView.ViewHolder {
// life cycle.
public ViewHolder(View itemView) {
super(itemView);
}
// UI.
protected abstract void onBindView(MysplashActivity a, AboutModel model);
protected abstract void onRecycled();
}
public AboutAdapter(MysplashActivity a) {
this.a = a;
this.itemList = CreateAboutModelImplementor.createModelList(a);
}
@Override
public AboutAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (itemList.get(viewType).getType()) {
case AboutModel.TYPE_HEADER:
return new HeaderHolder(
LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_about_header, parent, false));
case AboutModel.TYPE_CATEGORY:
return new CategoryHolder(
LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_abuot_category, parent, false));
case AboutModel.TYPE_APP:
return new AppHolder(
LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_about_app, parent, false));
case AboutModel.TYPE_TRANSLATOR:
return new TranslatorHolder(
LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_about_translator, parent, false)
);
case AboutModel.TYPE_LIBRARY:
return new LibraryHolder(
LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_about_library, parent, false));
default:
return null;
}
}
@Override
public void onBindViewHolder(AboutAdapter.ViewHolder holder, int position) {
holder.onBindView(a, itemList.get(position));
}
@Override
public void onViewRecycled(ViewHolder holder) {
super.onViewRecycled(holder);
holder.onRecycled();
}
@Override
public int getItemCount() {
return itemList.size();
}
@Override
public int getItemViewType(int position) {
return position;
}
}