progressDialog = ProgressDialog.show(MainActivity.this, "", "Loading...");
Thread thread = new Thread() {
public void run() {
latch.countDown();
try{
sleep(3000);
}
catch (Exception e) {
Log.e("tag", e.getMessage());
}
progressDialog.dismiss();
}
};
thread.start(); listView.setAdapter(adapter);
我希望在3秒内显示加载然后显示列表视图,但列表总是立即显示。如何在显示listview之前完成线程完成?
答案 0 :(得分:2)
你不应该让人们无缘无故地等待。如果您要加载某些内容,请加载它。否则,尽可能画出你能做的。
作为您特定问题的答案,您需要在线程setAdapter
睡眠3秒之后(现在调用在线程之外...我认为您认为该调用会阻塞,但是这是Thread的重点,它在你的代码的其余部分执行时做了自己的事情。)
但是,Thread不能对你的显示线程做任何事情(除了抛出异常),所以你必须将listView.setAdapter(adapter)
调用包裹在Runnable
中并通过{{ 1}}来自你的线程......
但不要!