package com.example.administrator.cookman.ui.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.example.administrator.cookman.R;
import com.example.administrator.cookman.model.entity.CookEntity.CategoryChildInfo2;
import com.example.administrator.cookman.model.entity.CookEntity.CategoryInfo;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
/**
* Created by Administrator on 2017/2/25.
*/
public class CookCategorySndAdapter extends BaseRecyclerAdapter<CookCategorySndAdapter.CookCategorySndStruct>{
public CookCategorySndAdapter(OnCookCategorySndListener onCookCategorySndListener){
this.onCookCategorySndListener = onCookCategorySndListener;
}
@Override
public CommonHolder<CookCategorySndStruct> setViewHolder(ViewGroup parent) {
return new CookCategoryFirHolder(parent.getContext(), parent);
}
class CookCategoryFirHolder extends CommonHolder<CookCategorySndStruct>{
@Bind(R.id.btn_tag_1)
public Button btnTag1;
@Bind(R.id.btn_tag_2)
public Button btnTag2;
@Bind(R.id.btn_tag_3)
public Button btnTag3;
public CookCategoryFirHolder(Context context, ViewGroup root) {
super(context, root, R.layout.item_cook_category_snd);
}
@Override
public void bindData(final CookCategorySndStruct cook){
if(cook.data1 != null){
btnTag1.setVisibility(View.VISIBLE);
btnTag1.setText(cook.data1.getName());
if(cook.isSelect == 1)
btnTag1.setSelected(true);
else
btnTag1.setSelected(false);
btnTag1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(onCookCategorySndListener != null){
updateSelection(cook, 1);
onCookCategorySndListener.onCookCategorySndClick(cook.data1.getCtgId(), cook.data1.getName());
}
}
});
if(cook.data2 == null){
btnTag2.setVisibility(View.GONE);
btnTag3.setVisibility(View.GONE);
return ;
}
btnTag2.setVisibility(View.VISIBLE);
btnTag2.setText(cook.data2.getName());
if(cook.isSelect == 2)
btnTag2.setSelected(true);
else
btnTag2.setSelected(false);
btnTag2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateSelection(cook, 2);
if(onCookCategorySndListener != null){
onCookCategorySndListener.onCookCategorySndClick(cook.data2.getCtgId(), cook.data2.getName());
}
}
});
if(cook.data3 == null){
btnTag3.setVisibility(View.GONE);
return ;
}
btnTag3.setVisibility(View.VISIBLE);
btnTag3.setText(cook.data3.getName());
if(cook.isSelect == 3)
btnTag3.setSelected(true);
else
btnTag3.setSelected(false);
btnTag3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateSelection(cook, 3);
if(onCookCategorySndListener != null){
onCookCategorySndListener.onCookCategorySndClick(cook.data3.getCtgId(), cook.data3.getName());
}
}
});
}
}
}
private CookCategorySndStruct oldCook;
private void updateSelection(CookCategorySndStruct newCook, int position){
if(oldCook != null)
oldCook.isSelect = 0;
newCook.isSelect = position;
oldCook = newCook;
notifyDataSetChanged();
}
public static class CookCategorySndStruct{
public CategoryInfo data1;
public CategoryInfo data2;
public CategoryInfo data3;
public int isSelect = 0;
public CookCategorySndStruct(){
}
public CookCategorySndStruct(CategoryInfo data1, CategoryInfo data2, CategoryInfo data3){
this.data1 = data1;
this.data2 = data2;
this.data3 = data3;
this.isSelect = 0;
}
public void add(CategoryInfo data){
if(null == data1) {
data1 = data;
return ;
}
if(null == data2) {
data2 = data;
return ;
}
if(null == data3) {
data3 = data;
return ;
}
}
}
private OnCookCategorySndListener onCookCategorySndListener;
public interface OnCookCategorySndListener{
public void onCookCategorySndClick(String ctgId, String name);
}
public static List<CookCategorySndStruct> createDatas(ArrayList<CategoryChildInfo2> datas){
List<CookCategorySndStruct> dstDatas = new ArrayList<>();
int size = datas.size();
int shi = size / 3;
int ge = size % 3;
if(0 == shi){
if(0 == ge)
return dstDatas;
CookCategorySndStruct item = new CookCategorySndStruct();
for(int i = 0; i < ge; i++)
item.add(datas.get(i).getCategoryInfo());
dstDatas.add(item);
return dstDatas;
}
int index = 0;
for(int i = 0; i < shi; i++){
CookCategorySndStruct item = new CookCategorySndStruct(
datas.get(index).getCategoryInfo(), datas.get(index + 1).getCategoryInfo(), datas.get(index + 2).getCategoryInfo()
);
dstDatas.add(item);
index += 3;
}
if(0 == ge)
return dstDatas;
CookCategorySndStruct item = new CookCategorySndStruct();
for(int i = 0; i < ge; i++)
item.add(datas.get(index + i).getCategoryInfo());
dstDatas.add(item);
return dstDatas;
}
}