NumberPicker с архиватором - PullRequest
       38

NumberPicker с архиватором

0 голосов
/ 09 марта 2019

Я пытаюсь добавить список данных в средство выбора номера. Я использую библиотеку: 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);
        }
    }

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Эта строка

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

String.valueOf( IList ) вернет строку, значение которой [CB, CC]. Вот почему вы видите его в интерфейсе NumberPicker.

Решение: Преобразование строкового массива в строковый массив.

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);
    }
}
0 голосов
/ 09 марта 2019

Это из-за следующего кода:

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

, где String.valueOf возвращает представление строкового представления объекта IList.

Вам нужно использовать что-то вроде toArray .

...