如何通过后面的代码向Android Xamarin中的单选按钮添加单选按钮?

时间:2019-05-12 13:00:17

标签: xamarin.android

标题已经说明了我想做什么:我正在使用Xamarin for Android。现在,我想拥有一个RadioGroup并通过后面的代码而不是XAML来填充RadioButton。我怎样才能做到这一点?我找不到任何塞特犬...

我为什么需要这个?我的小型Android应用程序有一个 Load 按钮,可从Web服务加载条目。每个条目都应用RadioButton表示,以便用户可以灵活选择。

2 个答案:

答案 0 :(得分:1)

这是我为您提供的一个示例,它动态创建了“单选按钮组”和“单选按钮”,以及如何确定用户在运行时选择哪个按钮。

protected override void OnCreate(Bundle savedInstanceState) {
    base.OnCreate(savedInstanceState);

    var layout = new LinearLayout(this) {
        Orientation = Orientation.Vertical
    };

    // Create Radio Group
    var rg = new RadioGroup(this);
    layout.AddView(rg);

    // Add Radio Buttons to Radio Group
    for (int i = 1; i < 6; i++) {
        var rb = new RadioButton(this) { Text = $"Radio Button {i}" };
        rg.AddView(rb);
    }

    // Show Radio Button Selected
    lblOutput = new TextView(this);
    layout.AddView(lblOutput);
    rg.CheckedChange += (s, e) => {
        lblOutput.Text = $"Radio Button {e.CheckedId} Selected";
    };

    SetContentView(layout);
}

输出

Output

答案 1 :(得分:0)

作为替代方案,我使用ListView实现了一个解决方案:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    SetContentView(Resource.Layout.activity_main);

    var toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
    SetSupportActionBar(toolbar);

    Speakers = new List<ISpeaker>();
    FindViewById<Button>(Resource.Id.loadButton).Click += LoadButtonOnClick;
}

private async void LoadButtonOnClick(object sender, EventArgs e)
{
    Speakers = await LoadSpeakersAsync();

    var sourceListView = FindViewById<ListView>(Resource.Id.sourceListView);
    sourceListView.Adapter = new ArrayAdapter<ISpeaker>(this, Android.Resource.Layout.SimpleListItem1, Speakers);
}