android-异步更新ListView数据
在某些情况下,我需要延迟更新我的ListView,因此我尝试使用while进行更新。看起来是这样的: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
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部分发生得更早