我想让用户通过外观类似于用于在数据选择器中选择日/月/年的车轮选择器的车轮选择器从ArrayList<MyObjectType>
中选择一个元素。虽然日期选择器显然具有三个变量,但我只关心一个变量。
实现这种选择器最直接的方法是什么?
答案 0 :(得分:4)
NumberPicker在Android窗口小部件中提供。这就是您想要的。
解决方案
<NumberPicker
android:id="@+id/numberPicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
和Java
NumberPicker np = findViewById(R.id.numberPicker);
String[] months3char = get3CharMonths();
np.setMaxValue(months3char.length - 1); // important
np.setDisplayedValues(months3char); // custom values
private String[] get3CharMonths() {
String[] months = new DateFormatSymbols().getMonths();
String[] months3char = new String[months.length];
for (int i = 0; i < months.length; i++) {
String month = months[i];
months3char[i] = month.length() < 3 ? month : month.substring(0, 3);
}
return months3char;
}
答案 1 :(得分:3)
答案 2 :(得分:0)
您可以使用自定义DialogFragment
来显示类似日期选择器的对话框。
例如,如果您的MyObjectType有3个字段,并且您希望用户选择它。
1-创建3个recyclerview,每个回收器显示MyObjectType中的一个字段。
2-在对话框中为MyObjectType的arraylist创建for循环,并创建3个自定义arraylist,每个字段都有自己的arraylist。我们将使用arraylist在recyclerview中显示该字段的值。
在for循环中,将每个字段添加到其arraylist中。例如arraylistField1.add(MyObjectType.getfield1());
3-创建3个适配器,每个适配器用于一个recyclerview以显示自定义阵列列表。
4-当用户单击“确定”时,从每个适配器获取选定的值。