如何在 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
}
}
我有这个点击监听器:
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
}
}