kotlin中介绍PopupWindow中textView?.isSelected = false的不变色bug

在kotlin中的写法和java中基本一样 因为经常用到就直接粘在这里了

  private fun showSellerPop() {
        if (mPopupWindow == null)
            mPopupWindow = PopupWindow(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT).apply {
                val inflate = View.inflate(activity, R.layout.layout_popwin_supplier_list, null)
                setBackgroundDrawable(ColorDrawable())
                contentView = inflate
                val recyclerView = inflate.find(R.id.popwin_list_view)
                recyclerView?.layoutManager = GridLayoutManager(activity, 4, GridLayoutManager.VERTICAL, false)
                sellerAdapter = object : CommonRecycleViewAdapter(activity, R.layout.item_popwin_list, mMenuData1) {
                    override fun convert(helper: ViewHolderHelper?, good: BussinessTypeData, position: Int) {
                        val textView = helper?.getView(R.id.item_popwin_tv)
                        val class_name = good.class_name
                        val class_id = good.class_id
                        textView?.text = class_name
                        textView?.isSelected = false
                        if (class_name == titleBarselectimg?.text.toString()) {
                            //textView?.setBackgroundResource(R.drawable.item_popwin_select_bg)
                            //textView?.setTextColor(Color.parseColor("#ffffffff"))
                            textView?.isSelected = true
                        }
                        textView?.onClick {
                            searchBean.class_id = class_id
                            titleBarselectimg?.text = class_name
                            dismiss()
                            toSearch()
                            notifyDataSetChanged()
                        }
                    }
                }
                recyclerView?.adapter = sellerAdapter
                isFocusable = true
                isOutsideTouchable = true
            }
        mPopupWindow?.showAsDropDown(line, 0, 0)
    }

其实我最想说是convert部分,说也说不明白直接看下图
这种点击状态选择器相信大家都可以随便写了吧,不过就是这个简单的状态选在器却困扰了我很久,以前的项目中都是用的CheckBox替代TextView的。
这是TextView的标准选择器写法

看清楚顺序从上到下 , 下面两个默认状态一定写最下面

<item android:color="@color/rgb_85_85_85">item>
<item android:drawable="@drawable/item_popwin_bg">item>
"@+id/item_popwin_tv"
        android:layout_width="@dimen/dimen_80dp"
        android:layout_height="@dimen/dimen_30dp"
        android:background="@drawable/item_popwin_selector"
        android:gravity="center"
        android:singleLine="true"
        android:text="酒店"
        android:textColor="@color/item_grid_selector"
        android:textSize="@dimen/textSize_14" />

item_popwin_selector


<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/item_popwin_select_bg" android:state_selected="true">item>
    <item android:drawable="@drawable/item_popwin_select_bg" android:state_pressed="true">item>
    <item android:drawable="@drawable/item_popwin_bg">item>
selector>

item_grid_selector


<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/white" android:state_pressed="true">item>
    <item android:color="@color/white" android:state_selected="true">item>
    <item android:color="@color/rgb_85_85_85">item>
selector>

kotlin中介绍PopupWindow中textView?.isSelected = false的不变色bug_第1张图片


                    override fun convert(helper: ViewHolderHelper?, good: BussinessTypeData, position: Int) {
                        val textView = helper?.getView(R.id.item_popwin_tv)
                        val class_name = good.class_name
                        val class_id = good.class_id
                        textView?.text = class_name
                        textView?.isSelected = false
                        if (class_name == titleBarselectimg?.text.toString()) {
//textView?.setBackgroundResource(R.drawable.item_popwin_select_bg)
//textView?.setTextColor(Color.parseColor("#ffffffff"))
                            textView?.isSelected = true
                        }
                        textView?.onClick {
                            searchBean.class_id = class_id
                            titleBarselectimg?.text = class_name
                            dismiss()
                            toSearch()
                            notifyDataSetChanged()
                        }
                    }

看客老爷可以说我说的话啰嗦是废话,可是恰恰就是最细微的bug才难以发现,慢慢积累成为不得不面对的问题。所以在此mark一下,提醒自己,也希望正在为此困惑的童鞋可以发现并解决这个问题。

sellerAdapter 是另外一个刷新库
我还写了一个PopWindow工具类下次加进来

你可能感兴趣的:(PopWindow)