4
我正在使用TouchDB复制数据库并在ViewPager中的一系列ListView中显示其内容。我遇到的问题是,在第一次复制时,TouchDB在完成复制之前将其称为onSuccess()/ onPostExecute()方法,这意味着我无法在ViewPager上调用invalidate()以使其绘制ListView。如何在ViewPager上稍后调用invalidate()
有没有解决这个问题的方法?
我正在使用TouchDB复制数据库并在ViewPager中的一系列ListView中显示其内容。我遇到的问题是,在第一次复制时,TouchDB在完成复制之前将其称为onSuccess()/ onPostExecute()方法,这意味着我无法在ViewPager上调用invalidate()以使其绘制ListView。如何在ViewPager上稍后调用invalidate()
有没有解决这个问题的方法?
您可以添加一个无效的runnable到运行队列的末尾。
myView.post(new Runnable() {
@Override
public void run() {
myView.invalidate();
}
});
这是行吗?
真正解决您的问题的唯一方法可能是定义您实例化并传递给您的DB代码的侦听器接口。当DB代码实际完成时,它将回调到监听器中。在该侦听器实例的实现中,您可以在视图上调用invalidate。 – 2013-04-04 19:53:32
啊谢谢,我认为你的Runnable代码解决了它,但似乎数据库线程仍然在最后完成。我明白你对监听器接口的意思,但不知道我将如何管理,因为我对引擎盖下面发生的事情不够了解 – KingFu 2013-04-04 20:06:08
使用了你的代码的变体,并让它在数据库线程。看起来这不是问题,但viewpager与db的viewquerys有关我认为 – KingFu 2013-04-04 20:16:48