package com.laowch.githubtrends.ui; 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.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; import com.laowch.githubtrends.R; import com.laowch.githubtrends.model.Language; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; /** * Created by lao on 15/9/28. */ public class AddLanguageAdapter extends RecyclerView.Adapter<AddLanguageAdapter.ViewHolder> { Context context; List<Language> mItems = new ArrayList<>(); LinkedList<Language> selectedItems = new LinkedList<>(); public AddLanguageAdapter(Context context) { this.context = context; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.add_language_grid_item, parent, false); return new ViewHolder(v); } @Override public void onBindViewHolder(final ViewHolder viewHolder, int position) { final Language language = mItems.get(position); viewHolder.text.setText(language.name); viewHolder.checkBox.setOnCheckedChangeListener(null); viewHolder.checkBox.setChecked(selectedItems.contains(language)); viewHolder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { selectedItems.add(language); } else { selectedItems.remove(language); } } }); } @Override public int getItemCount() { return mItems.size(); } public void setItems(Language[] items) { mItems.clear(); mItems.addAll(Arrays.asList(items)); notifyDataSetChanged(); } public List<Language> getSelectedItems() { return selectedItems; } public class ViewHolder extends RecyclerView.ViewHolder { private TextView text; private CheckBox checkBox; public ViewHolder(final View itemView) { super(itemView); text = (TextView) itemView.findViewById(R.id.text); checkBox = (CheckBox) itemView.findViewById(R.id.checkbox); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { checkBox.toggle(); } }); } } }