android-异步更新ListView数据

android-异步更新ListView数据,android,listview,asynchronous,handler,delay,Android,Listview,Asynchronous,Handler,Delay,在某些情况下,我需要延迟更新我的ListView,因此我尝试使用while进行更新。看起来是这样的: int m=2; while (bigList.get(m).type !=1) { final int n=m; new Handler().postDelayed(new Runnable(){ @Override public void run() { smallList

在某些情况下,我需要延迟更新我的ListView,因此我尝试使用while进行更新。看起来是这样的:

int m=2;
    while (bigList.get(m).type !=1) {
        final int n=m;
        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                smallList.add(n, bigList.get(n));
                adapter.notifyDataSetChanged();
            }
        }, bigList.get(n).delay);
        m++;
    }

但它只是第一次延迟,然后一次更新,但我认为延迟会贯穿整个过程。我试图杀死/关闭/最终确定这个匿名Runnable中只存在最后一个,但没有效果。如何做到每一步都有延迟?可能使用其他构造,或者最好的方法是什么?

我还没有尝试过,但我猜问题在于处理程序是针对主线程的,而发布到该处理程序的代码也位于主线程上

因此,您的“while”循环正在阻塞线程,并且消息正在处理程序的队列中累积。然后,当循环退出时,将处理所有消息

为了得到您期望的结果,您可能需要在后台线程上运行“while”循环,并且仍然将消息发布到主线程


有关如何执行此操作的信息,请参阅。

谢谢您的建议,我将尝试向自己说明如何使用您的链接执行此操作。但我发现了确切的问题——postdayed比while中的其他东西更重,因此它首先添加所有临时项,然后才替换它,因此,m++比Handler部分发生得更早