![](/img/trans.png)
[英]On the same button when tap first time change the size of text,when tap second time changes to default
[英]Changes apply on the second tap
我有一個RecyclerView
並且正在嘗試進行多次選擇,以便可以對所有選中的項目執行操作。 我不得不提到在包含一個項目的片段中,我有一個單選按鈕( radioButton
),一些文本和一個按鈕( joinBtn
)。
我想做的是,當我單擊該項目時,單選按鈕將變為選中狀態,並且該按鈕將變為可見並啟用。
默認情況下,我的班級Group
的private boolean clicked = false
。
在ViewHolder
我有方法bind
:
public void bind(Group group) {
this.group = group;
mTitleTextView.setText(group.getName());
if(group.isClicked())
radioButton.setChecked(true);
else
radioButton.setChecked(false);
}
在onClick
方法中,我具有要執行的操作:
@Override
public void onClick(View view) {
if (joinBtn.isShown()) {
joinBtn.setVisibility(View.GONE);
joinBtn.setEnabled(false);
group.setClicked(false);
}
else{
joinBtn.setVisibility(View.VISIBLE);
joinBtn.setEnabled(true);
group.setClicked(true);
}
}
我的問題是我得到的行為:
第一次點擊:單選按鈕被選中。
第二次點擊:joinBtn出現。
第三次點擊:取消選中單選按鈕。
第4次點擊:joinBtn消失。
我如何使第一次和第二次點擊之間的動作一次發生? 第三和第四相同嗎?
嘗試在onClick()
邏輯之后在適配器實例上調用notifyItemChanged(int position)
。 將項目的索引作為參數傳遞。
UI可能不會自行更新,但是此功能應刷新它。
保留一個標志,該標志將在組單擊時發生變化
boolean isChecked = false ;
public void bind(Group group) {
this.group = group;
mTitleTextView.setText(group.getName());
if(isChecked)
isChecked = false;
radioButton.setChecked(false);
else
isChecked = true;
radioButton.setChecked(true);
}
接着
@Override
public void onClick(View view) {
if (isChecked) {
joinBtn.setVisibility(View.GONE);
joinBtn.setEnabled(false);
group.setClicked(false);
}
else{
joinBtn.setVisibility(View.VISIBLE);
joinBtn.setEnabled(true);
group.setClicked(true);
}
}
顯然問題出在單選按鈕。 我做的第一件事是使用ImageView
而不是單選按鈕。 在該ImageView
我使用了(需要時)兩張圖片之一:已選擇或未選擇。 在bind
方法中,我所需要做的就是: joinBtn.setVisibility(View.GONE);
和radioBtnImage.setImageResource(R.drawable.radio_btn_unselected);
在onClick
方法中,我使用了:
if (joinBtn.isShown()) {
joinBtn.setVisibility(View.GONE);
joinBtn.setClickable(false);
radioBtnImage.setImageResource(R.drawable.radio_btn_unselected);
}
else{
joinBtn.setVisibility(View.VISIBLE);
joinBtn.setClickable(true);
radioBtnImage.setImageResource(R.drawable.radio_btn_selected);
}
這為我做到了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.