我已经使用CustomAdapter创建了一个Listview,每行都有单选按钮[单选] bt在设置适配器后产生错误
if (arr_data.get(position).isdefaultCurrency()) holder.radio_currency.setChecked(true);
} else {
holder.radio_currency.setChecked(false);
}
holder.radio_currency.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
for (int k = 0; k < arr_data.size(); k++) {
if (k == position) {
arr_data.get(k).setIsdefaultCurrency(true);
} else {
arr_data.get(k).setIsdefaultCurrency(false);
}
}
} else {
arr_data.get(position).setIsdefaultCurrency(false);
}
notifyDataSetChanged();
}
});
答案 0 :(得分:0)
我认为你使这比必要的更复杂。您似乎有一个单选按钮列表,并且您想知道选择了哪一个。而不是使用boolean
值列表,只需存储一个int
与所选的位置。或者,存储更有意义的内容以表示默认货币,例如字符'$'
等
答案 1 :(得分:0)
我的问题只是通过使用OnClickListener而不是OnCheckedChangeListener来解决。
holder.radio_currency.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int k = 0; k < arr_data.size(); k++) {
if (k == position) {
arr_data.get(k).setIsdefaultCurrency(true);
} else {
arr_data.get(k).setIsdefaultCurrency(false);
}
}
notifyDataSetChanged();
}
});