在ListView的自定义行中切换RadioButton

时间:2017-07-25 09:03:53

标签: android listview android-activity

每次打开目标活动时,我都会遍历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以便我可以切换它们?

感谢。

1 个答案:

答案 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;
    }
}