[英]OnClick not firing in RecyclerView adapter
我的RecyclerView
包含單選按鈕。 當我單擊一個時,我的以下實現應取消選擇所有其他實現( notifyDataSetChanged()
應重新綁定所有行)。 令人驚訝的是, onClick
從未被觸發:
public class NameAdapter extends RecyclerView.Adapter<NameAdapter.NameHolder> {
private List<String> myNames;
private int selectedPosition = -1;
public NameAdapter(List<String> names) {
myNames = names;
}
@Override public NameHolder onCreateViewHolder(ViewGroup parent, int viewType) {
Context context = parent.getContext();
View view = LayoutInflater.from(context).inflate(R.layout.name_item, parent, false);
return new NameHolder(view);
}
@Override public void onBindViewHolder(NameHolder holder, int position) {
String name = myNames.get(position);
holder.name.setText(name);
holder.radioButton.setChecked(position == selectedPosition);
}
@Override public int getItemCount() {
return myNames.size();
}
public class NameHolder extends RecyclerView.ViewHolder {
private TextView name;
private RadioButton radioButton;
public NameHolder(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.name);
radioButton = (RadioButton) itemView.findViewById(R.id.radio_button);
View.OnClickListener clickListener = new View.OnClickListener() {
@Override public void onClick(View v) {
selectedPosition = getAdapterPosition();
notifyDataSetChanged();
}
};
itemView.setOnClickListener(clickListener);
}
}
}
使用以下方式之一觸發點擊事件。
public class NameHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView name;
private RadioButton radioButton;
public NameHolder(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.name);
radioButton = (RadioButton) itemView.findViewById(R.id.radio_button);
itemView.setOnClickListener(this);
}
@Override
public boolean onClick(View v) {
//Put your code here
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.