我正在创建水平方向的 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();
}
它会更新字符串,但我现在无法滚动了。有任何想法吗? 我的分隔线也没有更新。
答案 0 :(得分:0)
您可以刷新用户界面,而无需使用线程冻结应用程序
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();