我在我的axml文件中定义MultiSelectListPreference
,如下所示:
<MultiSelectListPreference
android:title="Title"
android:summary="Sum"
android:key="dutyMarks"
android:entries="@array/array_marks"
android:entryValues="@array/array_marksValues">
</MultiSelectListPreference>
如何检查/阅读代码中的复选框?
我尝试通过PreferenceChange
事件获取检查值:
选中的值会出现在那里,但我不知道如何获取它们......
答案 0 :(得分:1)
这也是我的第一个想法,但是e.NewValue并没有包含&#39; GetEnumerator&#39;的公开定义。
我们可以在代码中简单地将e.NewValue
从object
投射到IEnumerable
,例如:
private void PreferenceChange(object sender, Preference.PreferenceChangeEventArgs e)
{
var selections = e.NewValue as IEnumerable;
if (selections != null)
{
foreach (var selection in selections)
{
Console.WriteLine(selection);
}
}
}
答案 1 :(得分:0)
因为e.NewValue是一个HashSet,你应该能够遍历它
foreach (string x in e.NewValue) {
// do whatever you need to do with each value x here
}
答案 2 :(得分:0)
如果有人偶然发现了这个问题,我就是这样解决的:
读取(异步部分非常难看,但我不知道如何添加'preferenceChangeD'事件)
private async void preferenceChange(object sender, Preference.PreferenceChangeEventArgs e)
{
await System.Threading.Tasks.Task.Delay(100);
List<string> sList = new List<string>();
ICollection<string> selectedValues = mslp_dutyMarks.Values;
foreach(string x in selectedValues)
sList.Add(x);
}
<强>写强>
mslp_dutyMarks.Values = new List<string> { "A", "B", "C" };