私はRecyclerViewを使って国のラジオボタンのリストを表示し、ユーザーが自分の国を選択できるようにします。私はクリックしたアイテム以上のものを望んでいないので、アダプタのonBindViewメソッドでこのOnCheckListenerを書きましたが、RadioButtonをクリックするたびにいくつかのボタンが切り替わります。RadioButton "A"をクリックするとラジオボタン "B"が切り替わりますRecyclerView
@Override
public void onBindViewHolder(final com.example.ameer.ta7adialma3rifa.adapters.CountriesAdapter.ViewHolder holder, final int position) {
String name = mData.get(position).getName();
int imgId = mData.get(position).getImageId();
holder.radioButton.setText(name);
holder.flagImageView.setImageResource(imgId);
holder.radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
RadioButton button = (RadioButton) compoundButton;
if (!button.getText().equals(mData.get(position).getName())){
button.setChecked(false);
}
if (runnable != null){
runnable.run();
}
runnable = new Runnable() {
@Override
public void run() {
holder.radioButton.setChecked(false);
}
};
}
});
}
runnableの使用は何ですか? – Munir
Runnableを削除します。あなたの 'holder.radioButton.setChecked(false);'はRunnable上で実行されるので、recyclerview項目の位置が乱されます。 –
実行可能ファイルは、以前にチェックされたボタンのチェックを外すために使用されます。ボタンをクリックすると、前に選択したボタンの選択が解除され、チェックされたボタンが1つに制限されます。 –