标题已经说明了我想做什么:我正在使用Xamarin for Android。现在,我想拥有一个RadioGroup
并通过后面的代码而不是XAML来填充RadioButton
。我怎样才能做到这一点?我找不到任何塞特犬...
我为什么需要这个?我的小型Android应用程序有一个 Load 按钮,可从Web服务加载条目。每个条目都应用RadioButton
表示,以便用户可以灵活选择。
答案 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);
}
输出
答案 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);
}