如何在 Kotlin 中再次点击时取消 onclicklistener 的更改?

how to dismiss changes from onclicklistener on click again in Kotlin?

我有这个点击监听器:

holder.linearLayout_soul_bg.setOnClickListener {

            setBackgroundColor(R.color.soul_bg)
            holder.inspirationtext.setTextColor(Color.WHITE)
            holder.like.setImageDrawable(getResources().getDrawable(R.drawable.cancle_soul))
            holder.inspiration_title.setTextColor(Color.WHITE)
            holder.sourcetext.setTextColor(Color.WHITE)
            holder.sharetext.setTextColor(Color.WHITE)
            holder.sharetext.setBackgroundResource(R.drawable.small_share_bg_white)
        }

如果用户单击它,它会更改设计

如果用户再次单击,我如何撤消这些更改?

只需设置一个 Boolean 每次点击按钮就像


private val clicked = false 
holder.linearLayout_soul_bg.setOnClickListener {
    clicked = !clicked
    if( clicked ) {
            setBackgroundColor(R.color.soul_bg)
            holder.inspirationtext.setTextColor(Color.WHITE)
            holder.like.setImageDrawable(getResources().getDrawable(R.drawable.cancle_soul))
            holder.inspiration_title.setTextColor(Color.WHITE)
            holder.sourcetext.setTextColor(Color.WHITE)
            holder.sharetext.setTextColor(Color.WHITE)
            holder.sharetext.setBackgroundResource(R.drawable.small_share_bg_white)
    }
    else{
         // do your work for setting defaults
    }
}

Anshul 的建议肯定有效,但看起来您需要一个具有特定状态的视图。 想一想,也许您使用复选框或切换按钮会更方便。 这些视图可以根据需要设置样式,我认为这样会更符合逻辑。

您可以像这样使用复选框:

checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
    if (isChecked){
        // your logic
    }
}

我使用的isSelected如下:

holder.linearLayout_soul_bg.setOnClickListener {


            it.isSelected = !it.isSelected
            if (it.isSelected) {
                //do whatever here if true
            } else {
                //do whatever here if false

            }
        }