我正在收集大量文件,并在列表视图中显示它们。大多数工作负载都在适配器的构造函数中。有没有办法可以使用Asynctask并显示一个微调器,直到收集到所有数据。这是否意味着我必须在doInBackground方法中实例化适配器的构造函数?我该怎么做呢?
此外,此列表包含在选项卡中。我正在使用viewpager。因此,由于在构造函数中完成了工作,滚动到此特定选项卡是一个主要的断断续续。
答案 0 :(得分:0)
您可以在启动AsyncTask之前使用空列表实例化适配器。在AsyncTask的onPostExecute中,您可以使用数据更新列表,然后调用适配器的notifyDataSetChange
方法。
您也可以添加一个ProgressBar并将其隐藏在onPostExecute中。
答案 1 :(得分:0)
如果我的问题正确,那么您正在寻找ProgressDialog。这是一个例子:
class yourClass extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog.setMessage("Wait for list to fill up...");
showDialog();
}
protected String doInBackground(String... args) {
//Fill in your code to populate the list
}
protected void onPostExecute(String file_url) {
hideDialog();
}
}
private void showDialog() {
if (!pDialog.isShowing())
pDialog.show();
}
private void hideDialog() {
if (pDialog.isShowing())
pDialog.dismiss();
}
别忘了像这样声明你的pDialog:private ProgressDialog pDialog;