我想显示正在读取的文件的进度,并将其放入数组列表中。这样做时,在应用程序以列表视图向用户显示数组列表之前,我想显示通过 AsyncTask 读取了多少文件。目前短暂显示白屏。正在读取的文件由大约 20000 行组成。
AsyncTask( MyTask)在onCreate()方法中执行,如下:
private class MyAsync extends AsyncTask<Void, Integer, ArrayList<Movie>> {
ProgressDialog mProgressDialog;
ArrayList<Movie> movies;
@Override
protected void onPreExecute() {
super.onPreExecute();
//Show progress to user
mProgressDialog = new ProgressDialog(MovieRatingsActivity.this);
mProgressDialog.setTitle("Reading file");
mProgressDialog.setMessage("Reading file, Please Wait!");
mProgressDialog.setIndeterminate(false);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.show();
}
@Override
protected ArrayList<Movie> doInBackground(Void... voids) {
try {
InputStream inputStream = getResources().openRawResource(R.raw.ratings);
int count = inputStream.available();
// onProgressUpdate( (amount read by inputstream / size of file )* 100 );
movies = Movie.loadFromFile(inputStream);
return movies;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Integer... progress) {
super.onProgressUpdate(progress);
mProgressDialog.setProgress(progress[0]);
}
@Override
protected void onPostExecute(ArrayList<Movie> movies) {
super.onPostExecute(movies);
mProgressDialog.dismiss();
mInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
setListAdapter(new RowIconAdapter(getApplicationContext(), R.layout.listrow, R.id.row_label, movies));
}
}
四季花海
相关分类