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之前,我怎么能想完成线程?

===============>>#1 票数:2 已采纳

你不应该让人们无缘无故地等待。 如果您要加载某些内容,请加载它。 否则,尽可能画出你能做的。

作为你的具体问题的答案,你需要在它睡眠3秒之后拥有Thread setAdapter (现在调用在Thread之外......我认为你认为那个调用会阻塞,但这就是Thread的重点,当你的其余代码执行时,它会做自己的事情)。

但是,Thread不能对你的显示线程做任何事情(除了抛出异常),所以你必须在Runnable包装那个listView.setAdapter(adapter)调用并通过Thread中的Handler调用它....

但不要!

  ask by vNext translate from so

未解决问题?本站智能推荐: