package com.swifty.fillcolor.controller.main; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.swifty.fillcolor.MyApplication; import com.swifty.fillcolor.R; import com.swifty.fillcolor.model.AsynImageLoader; import com.swifty.fillcolor.model.OnRecycleViewItemClickListener; import com.swifty.fillcolor.model.bean.ThemeBean; import java.util.List; /** * Created by Swifty.Wang on 2015/8/14. */ public class ThemeListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { Context context; FrameLayout footer; List<ThemeBean.Theme> themelist; private final int TYPE_ITEM = 1; private final int TYPE_FOOTER = 2; public void setOnRecycleViewItemClickListener(OnRecycleViewItemClickListener onRecycleViewItemClickListener) { this.onRecycleViewItemClickListener = onRecycleViewItemClickListener; } private OnRecycleViewItemClickListener onRecycleViewItemClickListener; public ThemeListAdapter(Context context, List<ThemeBean.Theme> themelist, View footer) { this.context = context; this.themelist = themelist; this.footer = (FrameLayout) footer.getParent(); } @Override public int getItemViewType(int position) { if (position == themelist.size()) { return TYPE_FOOTER; } return TYPE_ITEM; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = null; if (viewType == TYPE_ITEM) { v = LayoutInflater.from(context) .inflate(R.layout.view_list_item, parent, false); return new VHItem(v); } else if (viewType == TYPE_FOOTER) { return new VHFooter(footer); } return null; } @Override public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) { if (holder instanceof VHItem) { if (themelist.get(position) != null) { ((VHItem) holder).name.setText(themelist.get(position).getN()); if (themelist.get(position).getC() == -1) { ((VHItem) holder).image.setImageResource(R.mipmap.secretgraden); } else { AsynImageLoader.showImageAsyn(((VHItem) holder).image, String.format(MyApplication.ThemeThumbUrl, themelist.get(position).getC())); } ((VHItem) holder).parent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (onRecycleViewItemClickListener != null) onRecycleViewItemClickListener.recycleViewItemClickListener(((VHItem) holder).parent, position); } }); } } else if (holder instanceof VHFooter) { ((VHFooter) holder).footer.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); } } @Override public int getItemCount() { return themelist.size() + 1; } public List<ThemeBean.Theme> getList() { return themelist; } class VHFooter extends RecyclerView.ViewHolder { FrameLayout footer; public VHFooter(View itemView) { super(itemView); footer = (FrameLayout) itemView; } } static class VHItem extends RecyclerView.ViewHolder { public ImageView image; public TextView name; public View parent; public VHItem(View itemView) { super(itemView); image = (ImageView) itemView.findViewById(R.id.image); name = (TextView) itemView.findViewById(R.id.name); parent = itemView; } } public void updateListView(List<ThemeBean.Theme> list) { this.themelist = list; notifyDataSetChanged(); } }