每次打开目标活动时,我都会遍历ListView中的自定义行来搜索特定值。
private void setSelectedProfile() {
SharedPreferences sp = getSharedPreferences("SPD", Context.MODE_PRIVATE);
for (int i = 0; i < lv.getCount(); i++) {
if (String.valueOf(lv.getItemAtPosition(i)).equals(sp.getString("default", ""))) {
// code that I needed
break;
}
}
}
循环发现后,我需要切换自定义行内的单选按钮。我试图找到并应用他们的解决方案,但没有一个适合我的情况。
如何访问RadioButton以便我可以切换它们?
感谢。
答案 0 :(得分:1)
在ListView适配器中的getView方法中执行此操作。像这样:
public class MyAdapter extends ArrayAdapter<String> {
private SharedPreferences sp;
private List<String> data;
public MyAdapter(@NonNull Context context, @NonNull List<String> data) {
super(context, -1, data);
this.data = data;
sp = context.getSharedPreferences("SPD", Context.MODE_PRIVATE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
// init views
RadioButton radioButton = (RadioButton ) rowView.findViewById(R.id.radioButton);
// toggle the radio button
if (data.get(position).equals(sp.getString("default", ""))) {
radioButton.setChecked(!radioButton.isChecked());
}
// bind other views
return rowView;
}
}