package com.wxx.fragmentaction.recycler;
import android.content.Context;
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.util.SparseBooleanArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.wxx.fragmentaction.R;
import java.util.List;
/**
* 作者:Tangren_ on 2017/2/21 0021.
* 邮箱:wu_tangren@163.com
* TODO:用一句话概括
*/
public class RecyclerAdapter extends RecyclerView.Adapter<ItemViewHolder> {
private List<String> mItems;
private ItemClick click;
private SparseBooleanArray mBooleanArray;
private int mLastCheckedPosition = -1;
private Context context;
public RecyclerAdapter(Context context, List<String> mItems) {
this.mItems = mItems;
this.context = context;
mBooleanArray = new SparseBooleanArray(mItems.size());
}
public void setItemChecked(int position) {
mBooleanArray.put(position, true);
if (mLastCheckedPosition > -1) {
mBooleanArray.put(mLastCheckedPosition, false);
notifyItemChanged(mLastCheckedPosition);
}
notifyDataSetChanged();
mLastCheckedPosition = position;
}
@Override
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
ItemViewHolder holder = new ItemViewHolder(view, click);
return holder;
}
@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
if (!mBooleanArray.get(position)) {
//没有选中
holder.line.setVisibility(View.INVISIBLE);
holder.itemView.setBackgroundResource(R.color.colorGray);
holder.textView.setTextColor(Color.BLACK);
} else {
holder.line.setVisibility(View.VISIBLE);
holder.itemView.setBackgroundColor(Color.WHITE);
holder.textView.setTextColor(context.getResources().getColor(R.color.colorPrimary));
}
holder.textView.setText(mItems.get(position));
}
@Override
public int getItemCount() {
return mItems.size();
}
public void setOnClick(ItemClick click) {
this.click = click;
}
}
点击事件
private mCurrentPosition=-1;
@Override
public void onClick(View view, int postion) {
if (mCurrentPosition == postion) {
return;
}
mCurrentPosition = postion;
mAdapter.setItemChecked(postion);
}