從數據庫sqlLite讀取值後,如何設置dinamically進度條狀態?在光標中設置ProgressBar while sqlLite
我有這段代碼。
int i = 0;
while (!c.isAfterLast()) {
i++;
pb.setProgress(i)
}
但我的問題是,進度條只在完成更新,而無需如此「liveEffect」
從數據庫sqlLite讀取值後,如何設置dinamically進度條狀態?在光標中設置ProgressBar while sqlLite
我有這段代碼。
int i = 0;
while (!c.isAfterLast()) {
i++;
pb.setProgress(i)
}
但我的問題是,進度條只在完成更新,而無需如此「liveEffect」
我解決我的問題,處理程序和線程.sleep(用於模擬直播)
new Thread(new Runnable() {
public void run() {
do {
mProgressStatus++;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
mHandler.post(new Runnable() {
public void run() {
pb.setProgress(mProgressStatus);
}
);
} while (c.moveToNext());
}
}).start();
實際上,執行時間是太低了,通過實時效果不會出現。取大光標周圍10000值,那麼應用循環現在你可以看到進步
可以使用Activity類的runOnUiThread方法:
runOnUiThread(new Runnable() {
@Override
public void run() {
pb.setProgress(i);
}
});
這裏更多:https://developer.android.com/reference/android/app/Activity.html#runOnUiThread(java.lang.Runnable)
謝謝,問題是我沒有使用新線程 – LorenzoBerti
謝謝,但如果我使用斷點不行的話。所以我相信,如果你的代碼在主線程中運行,那麼setProgress – LorenzoBerti
就沒有問題了。否則運行您的代碼在主要threa d –
謝謝你我已經解決了handler.post和Thread.sleep。我會發布我的解決方案 – LorenzoBerti