Сборщик номеров замораживает приложение - почему так? - PullRequest
0 голосов
/ 15 ноября 2018

Я создаю NumberPicker с горизонтальной ориентацией, которая замораживает мое приложение.Исходное состояние: сборщик не виден.В методе я устанавливаю его видимым и помещаю в него данные

        if (_regalPicker != null) {
        _regalPicker.setVisibility(View.VISIBLE);
        String[] templist = new String[arr.size()];
        for (int i = 0; i < arr.size(); i++) {
            templist[i] = arr.get(i).name;
        }
        _regalPicker.setDisplayedValues(null);
        _regalPicker.setMinValue(0);
        _regalPicker.setMaxValue(templist.length - 1);
        _regalPicker.setDisplayedValues(templist);
        _regalPicker.setValue(1);
        _regalPicker.setEnabled(true);
        _regalPicker.setFadingEdgeEnabled(true);
        _regalPicker.setScrollerEnabled(true);
        _regalPicker.setWrapSelectorWheel(true);
        _regalPicker.invalidate();
    }

. Он обновляет строки , но я больше не могу прокручивать его.Есть идеи?Мои разделители также не обновляются.

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете обновить свой интерфейс, не замораживая свое приложение с потоком

Thread thread = new Thread(){
       public void run(){

            String[] templist = new String[arr.size()];
                    for (int i = 0; i < arr.size(); i++) {
                        templist[i] = arr.get(i).name;
                    }

            runOnUiThread(new Runnable(){
                @Override
                public void run(){
                    // change UI elements here
                    if (_regalPicker != null) {
                        _regalPicker.setVisibility(View.VISIBLE);
                        _regalPicker.setDisplayedValues(null);
                        _regalPicker.setMinValue(0);
                        _regalPicker.setMaxValue(templist.length - 1);
                        _regalPicker.setDisplayedValues(templist);
                        _regalPicker.setValue(1);
                        _regalPicker.setEnabled(true);
                        _regalPicker.setFadingEdgeEnabled(true);
                        _regalPicker.setScrollerEnabled(true);
                        _regalPicker.setWrapSelectorWheel(true);
                        _regalPicker.invalidate();
                  }

                }
            });

       }
    }        
thread.start();
...