我正在学习Android中的AsyncTask,我试图在后台线程中添加ListView中的字符串列表并同时尝试更新进度条。问题是进度条没有显示,但应用程序工作正常......项目逐一添加。
public class MainActivity extends AppCompatActivity {
ListView mListView;
private String[] texts = {"A","B","C","D","E","F","G","H","I"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_PROGRESS);
// requestWindowFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.listView);
mListView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, new ArrayList<String>()));
new MyTask().execute();
}
private class MyTask extends AsyncTask<Void, String, Void>{
private ArrayAdapter<String> mAdapter;
private int count =0;
@Override
protected void onPreExecute() {
mAdapter= (ArrayAdapter<String>) mListView.getAdapter();
setProgressBarIndeterminate(false);
setProgressBarVisibility(true);
}
@Override
protected Void doInBackground(Void... params) {
for(String item:texts){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
publishProgress(item);
}
return null;
}
@Override
protected void onProgressUpdate(String... values) {
mAdapter.add(values[0]);
count++;
setProgress((int)(((double)count/texts.length)*10000));
}
@Override
protected void onPostExecute(Void aVoid) {
setProgressBarVisibility(false);
Toast.makeText(MainActivity.this,"All items added",Toast.LENGTH_LONG).show();
}
}
}
答案 0 :(得分:0)
进度功能已弃用表单API 21. Android 6.0是API 23
您可能必须使用ProgressBar
QString::number(...)