我很抱歉这个奇怪的标题,但我没有找到其他方法来解释这个问题。
在Fragment
中我必须显示ProgressDialog
,直到片段内的每个指令都完成为止。问题是它必须在布局必须更改前5秒消失。
这是我的代码:
final View view = inflater.inflate(R.layout.fragment_lista, container, false);
GridView gv = (GridView) view.findViewById(R.id.gridView);
Gson gson = new GsonBuilder().serializeNulls().create();
ProgressDialog progressDialog = ProgressDialog.show(getActivity(), "", "Loading...", true);
new Thread(new Runnable() {
@Override
public void run()
{
String urlLista = null;
try {
urlLista = connection("https://www.something.com"); //personal method for this connection
} catch (IOException e) {
e.printStackTrace();
}
String listaTrimmed = urlLista.trim();
ListaManga listaManga = gson.fromJson(listaTrimmed, ListaManga.class);
List prov = new ArrayList();
for (int i = 0; i < 15; i++) {
prov.add(listaManga.getManga().get(i));
} //ArrayList of 15 elements
GridAdapter gridadapter = new GridAdapter(getActivity(), prov); //custom adapter
});
getActivity().runOnUiThread(new Runnable() {
@Override
public void run()
{
progressDialog.dismiss(); //Here is when the ProgressDialog obviously disappear
gv.setAdapter(gridadapter);
gridadapter.notifyDataSetChanged();
}
});
}
}).start();
如果我必须诚实,我希望通过我的代码,在dismiss()
的{{1}}之后,此片段中的所有内容都将成功加载,但它不是。我必须等待5秒钟,直到所有东西都装满了,我不明白为什么,希望我能在这里得到一些答案。如果对我的代码有一些疑问,请问,我不得不削减它的很多部分,我无法解释这个问题更好的抱歉。我还尝试将ProgressDialog
dismiss()
置于延迟ProgressDialog
的帖子中,但是我已取消了Handler
的动画。
答案 0 :(得分:1)
您是否尝试过最后调用dismiss()方法?
gv.setAdapter(gridadapter);
gridadapter.notifyDataSetChanged();
progressDialog.dismiss();