RecyclerView点击当前item改变 背景颜色


既然是做RecyclerView的item点击切换背景颜色  肯定要先创建出来 所以以上的步骤我就不在这里展示了
1.首先在drawable里 创建  selector

   
   

   
   
    
    
    
    
    
    
    
    
    

   
   
 
2.然后在RecyclerView 的子布局里 将背景颜色设置为  android:background="@drawable/listitem_selector"
empty
    
    

    
    

    
     
     

    
    
3.在Bean类里定义一个标记 用来储存当前状态
empty       private String cat_name;
            private String id;
            private String is_leaf;
            private List
    
    
     
      children;
            private boolean isFlag;

            public boolean isFlag() {
                return isFlag;
            }

            public void setFlag(boolean flag) {
                isFlag = flag;
            }
    
    
4.在点击事件里写逻辑判断
    @Override
    public void onBindViewHolder(ViewHolder1 holder, final int position) {
        mholder = (ViewHolder1) holder;
        holder.view_1.setText(categorylist.get(position).getCat_name());
        if(categorylist.get(position).isFlag()){
            holder.ll.setSelected(true);
        }else {
            holder.ll.setSelected(false);
        }}

因为是用RecyclerView做的接口回调点击 相信用过的RecyclerView的朋友 都能看出是怎么回事


                @Override
                public void setOnItemClick(int position) {
                    for (int i = 0; i < categorylist.size(); i++) {
                        if(i==position){
                            categorylist.get(i).setFlag(true);}else {
                            categorylist.get(i).setFlag(false);}
                        adaptera.notifyDataSetChanged();
                    }}



                @Override
                public void setOnItemClick(int position) {
                    for (int i = 0; i < categorylist.size(); i++) {
                        if(i==position){
                            categorylist.get(i).setFlag(true);}else {
                            categorylist.get(i).setFlag(false);}
                        adaptera.notifyDataSetChanged();
                    }}
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现RecyclerView改变item颜色,可以在RecyclerView的Adapter中设置点事件,在点事件中改变item颜色。具体实现步骤如下: 1. 在item的布局文件中,设置一个根布局,并将需要改变颜色的子视图放在该布局中。例如,以下是一个item的布局文件: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/item_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="16dp"> <TextView android:id="@+id/item_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Item" /> </LinearLayout> ``` 在该布局中,将TextView放在LinearLayout中,LinearLayout作为根布局。 2. 在RecyclerView的Adapter中,设置点事件。在ViewHolder的构造函数中,获取item的根布局,并设置点事件。例如,以下是一个RecyclerView的Adapter的代码: ```kotlin class MyAdapter(private val itemList: List<String>) : RecyclerView.Adapter<MyAdapter.ViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false) return ViewHolder(view) } override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.bind(itemList[position]) } override fun getItemCount(): Int { return itemList.size } inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { private val itemLayout: LinearLayout = itemView.findViewById(R.id.item_layout) private val itemText: TextView = itemView.findViewById(R.id.item_text) init { itemLayout.setOnClickListener { val pos = adapterPosition if (pos != RecyclerView.NO_POSITION) { itemLayout.setBackgroundColor(ContextCompat.getColor(itemView.context, R.color.colorAccent)) itemText.setTextColor(ContextCompat.getColor(itemView.context, R.color.white)) } } } fun bind(item: String) { itemText.text = item } } } ``` 在ViewHolder中获取item的根布局和需要改变颜色的子视图。在根布局上设置点事件,获取item的位置,然后通过`itemLayout.setBackgroundColor()`和`itemText.setTextColor()`方法改变item颜色和TextView的颜色。注意,在获取颜色时需要使用`ContextCompat.getColor()`方法,这样可以兼容不同版本的Android系统。 这样,当用户点item时,item背景颜色和TextView的文本颜色就会改变
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值