後我使用recyclerView打造切換按鈕(如數字鍵盤)的名單,我想實現:禁用所有其他切換按鈕,一個被點擊
- 當用戶打開「通過點擊一個按鈕,「關斷」的所有其他按鈕
我試圖增加一個onClickListener
視圖支架類的內部,並調用notifyDataSetChanged()
使得onBindViewHolder(final ViewHolder holder, int position)
稱爲然後改變按鈕的狀態。
但它不起作用,點擊的按鈕不會改變它的狀態。
ViewHolder
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
ToggleButton button;
String id;
public ViewHolder(View itemView) {
super(itemView);
button = (ToggleButton) itemView.findViewById(R.id.toggle);
button.setOnclickListener(this);
}
@Override
public void onClick(View view) {
((ToggleButton) view).setChecked(true);
int pos = getAdapterPosition();
if (pos != RecyclerView.NO_POSITION) {
selected = pos; //store the position of the user clicked button
notifyDataSetChanged();
}
}
onBindViewHolder()在我的adpater類
public void onBindViewHolder(final ViewHolder holder, int position) {
String data = mData.get(position);
holder.id = data;
holder.button.setText(data);
holder.button.setTextOn(data);
holder.button.setTextOff(data);
if (position != selected) { //if the button is not the user chosen one
if (holder.button.isChecked()) { // and it's in 'ON' state
holder.button.toggle(); // toggle it to switch 'OFF'
}
}
所以你需要在一個時間上的按鈕進行切換。是嗎? – darwin
避免使用notifyDataSetChanged(),而不是使用notifyItemChanged(pos),如果可能的話,我認爲notifyItemChanged(int pos)適合於你的需求,bcz單個項目一次處於活動狀態。 – darwin