java - 带数组列表的 NumberPicker

标签 java android arraylist numberpicker android-number-picker

我正在尝试在数字选择器中添加数据列表。我正在使用的库:https://github.com/ShawnLin013/NumberPicker对于数字选择器。

这就是它在我的应用程序中的显示方式:

Image NumberPicker

正如您所看到的,它的两侧带有 [ ] 并用逗号分隔,我该如何消除它?我想这就是问题所在。

我正在从 FIREBASE 数据库获取信息。

我的代码:

IList = new ArrayList<>();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Information").child( uploads.getIdPost() )
        .child("CBS1");

reference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        IList.clear();
        for (DataSnapshot snapshot : dataSnapshot.getChildren()){
            IList.add(snapshot.getKey());

            String[] data = {String.valueOf( IList )};
            numberPicker.setMinValue(data.length);
            numberPicker.setMaxValue(data.length);
            numberPicker.setDisplayedValues(data);
            numberPicker.setValue(data.length);
            numberPicker.setWrapSelectorWheel(false);
        }
    }

最佳答案

这一行

String[] data = {String.valueOf( IList )};

String.valueOf( IList ) 将返回一个值为 [CB, CC] 的字符串。这就是您在 NumberPicker UI 上看到它的原因。

解决方案:将字符串数组列表转换为字符串数组。

IList.add(snapshot.getKey());

// Convert string arraylist to string array.
String[] data = new String[list.size()];
data = list.toArray(data);

// Set minValue is 1 instead of data.length
numberPicker.setMinValue(1); 
numberPicker.setMaxValue(data.length);
numberPicker.setDisplayedValues(data);
numberPicker.setValue(data.length);
numberPicker.setWrapSelectorWheel(false);

更新:我想这就是你的意思

reference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        IList.clear();

        for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
            IList.add(snapshot.getKey());
        }

        // Convert string arraylist to string array.
        String[] data = new String[IList.size()];
        data = IList.toArray(data);

        numberPicker.setMinValue(0);
        numberPicker.setMaxValue(data.length - 1);
        numberPicker.setDisplayedValues(data);
        numberPicker.setValue(0);
        numberPicker.setWrapSelectorWheel(false);
    }
}

关于java - 带数组列表的 NumberPicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55072069/

相关文章:

java - 与对象引用混淆

java - 如何将一个数组设置为另一个数组的相同排序?

java - ArrayList 错误程序无法运行

Java通用 map

java - Hibernate UPDATE 查询将其他值设置为 NULL

java - 使用参数名称时映射器出错

java - 从应用程序发送带有附件的电子邮件

android - 如果调用不可靠,为什么要覆盖 Activity.onDestroy()?

java - 适用于 Android 的适当多任务处理

java - 为什么每个 Fragment 中都需要有一个公共(public)的空构造函数?