recyclerview點選事件與點選更改顏色
阿新 • • 發佈:2019-01-30
點選recyclerview條目改變控制元件顏色
介面卡
都是在介面卡中配置的,步驟都在慢慢看。長按監聽和點選監聽同理import android.content.Context; import android.graphics.Color; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.bumptech.glide.Glide; import com.jd.demo.R; import com.jd.demo.bean.FenleiLeftBean; import java.util.ArrayList; import java.util.List; /** * Created by dell on 2017/11/13. */ public class FenleiLeftAdapter extends RecyclerView.Adapter<FenleiLeftAdapter.ViewHolder> { //1、定義一個集合,用來記錄選中 private List<Boolean> isClicks; private Context context; private List<FenleiLeftBean.DataBean> list; //2、定義監聽並設set方法 private OnItemClickListener mOnItemClickListener; public void setOnItemClickListener(OnItemClickListener mOnItemClickListener){ this.mOnItemClickListener = mOnItemClickListener; } public FenleiLeftAdapter(Context context, List<FenleiLeftBean.DataBean> list) { this.context = context; this.list = list; //3、為集合新增值 isClicks = new ArrayList<>(); for(int i = 0;i<list.size();i++){ isClicks.add(false); } } //建立新View,被LayoutManager所呼叫 @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.fenlei_left,viewGroup,false); ViewHolder vh = new ViewHolder(view); return vh; } //將資料與介面進行繫結的操作 @Override public void onBindViewHolder(final ViewHolder viewHolder, int position) { viewHolder.fenlei_left_name.setText(list.get(position).getName()); Glide.with(context).load(list.get(position).getIcon()).into(viewHolder.fenlei_left_img); //4:設定點選事件 if(mOnItemClickListener!=null) { viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int position = viewHolder.getLayoutPosition(); // 1 for(int i = 0; i <isClicks.size();i++){ isClicks.set(i,false); } isClicks.set(position,true); notifyDataSetChanged(); mOnItemClickListener.onItemClick(viewHolder.itemView, position); // 2 } }); } //5、記錄要更改屬性的控制元件 viewHolder.itemView.setTag(viewHolder.fenlei_left_name); viewHolder.itemView.setTag(viewHolder.back); //6、判斷改變屬性 if(isClicks.get(position)){ viewHolder.fenlei_left_name.setTextColor(Color.parseColor("#ff0000")); viewHolder.back.setBackgroundColor(Color.parseColor("#f0f0f0")); }else{ viewHolder.back.setBackgroundColor(Color.parseColor("#ffffff")); viewHolder.fenlei_left_name.setTextColor(Color.parseColor("#000000")); } } @Override public int getItemCount() { return list.size(); } //自定義的ViewHolder,持有每個Item的的所有介面元素 public static class ViewHolder extends RecyclerView.ViewHolder { public TextView fenlei_left_name; public ImageView fenlei_left_img; public LinearLayout back; public ViewHolder(View view){ super(view); fenlei_left_name = (TextView) view.findViewById(R.id.fenlei_left_name); fenlei_left_img = (ImageView) view.findViewById(R.id.fenlei_left_img); back=view.findViewById(R.id.back); } } //7、定義點選事件回撥介面 public interface OnItemClickListener{ void onItemClick(View view,int position); } }