奇怪的画廊+广播接收器的行为

时间:2012-04-10 20:58:24

标签: android race-condition android-gallery

好的,所以我有一个广播接收器被调用,并且在onReceive()方法中,我使用静态数据更新了一个带有新适配器的图库,所有这些都是在UI线程上完成的。

然而,没有任何改变。旧数据保留在库中,但是当我调试我的代码并花时间在调用invalidate之后更新。哦,顺便说一下,视图在ViewFlipper中,但在创建新适配器之前我改为正确的视图。所以我有竞争条件,这是正常的吗?如果不是,我该怎么办?

下面是我在onRecieve()中讨论的一个示例。

onRecieve() {
    mFlipper.setDisplayedChild(0);
    mNavAdapter.addCategory(-1);
    mGalNav.setSelection(0);
    getCategoryProducts(-1);
}

void getCategoryProducts(int category) {
   mGalProducts.setAdapter(new DealCheckInAdapter(this,
   getCheckInProducts()));
   mGalProducts.invalidate();
}

1 个答案:

答案 0 :(得分:1)

invalidate()方法不应该做我猜你认为它会做的事情。你想使用:

mDealCheckInAdapter.notifyDataSetChanged(); 

这是“刷新”listView适配器的方法。