package safeluck.drive.evaluation.adapter; import android.content.Context; import android.graphics.Color; import android.util.SparseBooleanArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; import java.util.List; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.listener.OnItemClickListener; /** * Created by YoKeyword on 16/2/10. */ public class MenuAdapter extends RecyclerView.Adapter { private LayoutInflater mInflater; private Context mContext; private List mItems = new ArrayList<>(); private SparseBooleanArray mBooleanArray; private OnItemClickListener mClickListener; private int mLastCheckedPosition = -1; public MenuAdapter(Context context) { mInflater = LayoutInflater.from(context); mContext = context; } public void setDatas(List items) { mItems.clear(); mItems.addAll(items); mBooleanArray = new SparseBooleanArray(mItems.size()); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mInflater.inflate(R.layout.item_menu, parent, false); final MyViewHolder holder = new MyViewHolder(view); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = holder.getAdapterPosition(); if (mClickListener != null) { mClickListener.onItemClick(position, v); } } }); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { if (!mBooleanArray.get(position)) { holder.viewLine.setVisibility(View.INVISIBLE); holder.itemView.setBackgroundResource(R.color.color_19d7d9); holder.tvName.setTextColor(Color.BLACK); } else { holder.viewLine.setVisibility(View.VISIBLE); holder.itemView.setBackgroundColor(Color.WHITE); holder.tvName.setTextColor(mContext.getResources().getColor(R.color.colorAccent)); } holder.tvName.setText(mItems.get(position)); } @Override public int getItemCount() { return mItems.size(); } public void setItemChecked(int position) { mBooleanArray.put(position, true); if (mLastCheckedPosition > -1) { mBooleanArray.put(mLastCheckedPosition, false); notifyItemChanged(mLastCheckedPosition); } notifyDataSetChanged(); mLastCheckedPosition = position; } class MyViewHolder extends RecyclerView.ViewHolder { View viewLine; TextView tvName; public MyViewHolder(View itemView) { super(itemView); viewLine = itemView.findViewById(R.id.view_line); tvName = (TextView) itemView.findViewById(R.id.tv_name); } } public void setOnItemClickListener(OnItemClickListener itemClickListener) { this.mClickListener = itemClickListener; } }