0
我有一個線程在從txt文件獲取數據後將數據更新到SQLite數據庫中,我想顯示一個對話框,其進度相應地更新。Android - Progress Bar not updating
以下代碼可以正常工作,即使runOnUiThread也適用於解僱,但Progress並未更新。
Thread thread = new Thread(){
@Override
public void run() {
Log.d("THREAD", "in run");
// TODO Auto-generated method stub
try {
Log.d("DATABASE", "Creating Database");
SQLiteDatabase db = openOrCreateDatabase("WordDatabase", MODE_PRIVATE, null);
Log.d("DATABASE", "Checking table exist");
Cursor tableName = db.rawQuery("SELECT DISTINCT tbl_name FROM sqlite_master WHERE tbl_name='Words'",null);
if(tableName.getCount() < 1){
Log.d("DATABASE", "Creating Table");
db.execSQL("CREATE TABLE IF NOT EXISTS Words (Word TEXT);");
ContentValues cv = new ContentValues();
float totalWords = 5000;// 144895;
float wordsSelected = 0;
Log.d("CONTENT", "Entering Values");
Scanner scanner = new Scanner(getApplicationContext().getAssets().open("english.txt"));
while(scanner.hasNext()){
int i=0;
while(scanner.hasNext() && i<500){
cv.put("Word", scanner.next());
db.insert("Words", null, cv);
i++;
wordsSelected++;
final float percent = (wordsSelected/totalWords)*100;
Log.d("PROGRESS", Float.toString((int)percent));
runOnUiThread(new Runnable() {
@Override
public void run() {
dialog.setProgress((int) percent);
if(percent == 100) dialog.dismiss();
}
});
}
cv.clear();
Log.d("CONTENT", "inserting");
}
Log.d("CONTENT", "Completed");
}
}catch(Exception ex){
ex.printStackTrace();
}
}
};
thread.start();
是否要更新的任何一個列表?如果是的話,你需要使用'notifyDatasetChanged()' –
@LittleChild你的意思是什麼?我從txt文件中獲取一些文本,然後在數據庫中發送該文本。 UI上沒有列表。 – mdanishs
'logcat'是否正常顯示進度? –