1

嗨,我有一个 CursorAdapter,它映射到数据库中的一些项目,如下所示

gameid|类型|picurl|currPlayer|创作者

gameid 是我有 2 种类型的每个游戏的唯一 ID。玩家游戏和机器人游戏。如果游戏是机器人游戏,那么 picurl/currPlayer/creator 将为空。这是我的适配器代码。

这是我的代码: http: //pastebin.com/61KZbir1

我遇到的问题是,在初始加载时,有时一些图像不会显示,但当我滚动时它们会显示。除此之外,机器人游戏有时会显示错误的文本和图像,但当我滚动时它们会自行修复。我做了一件事来解决这个问题,当我现在将所有数据插入表中时,我正在注销更新 ui 的内容观察器,并在我完成插入后重新注册它,然后调用一次方法来更新 ui。该方法位于名为 refreshGamesList() 的 pastebin 底部。但是,当我没有为删除/插入取消注册内容观察器时,视图首先显示不正确,但随后它会获得更多回调,并使用这些回调进行自我修复。我到处寻找解决方案,但没有找到任何东西。

4

1 回答 1

3

我终于修好了!问题主要是从我的 bindview 触发任务我认为这是糟糕的设计,我将我正在执行的所有查询从 bindview 中的 asynctask 移动到 ui 线程(活动)中的 asynctask,然后我使用了一个矩阵游标并构建了一个自定义光标与我需要从另一个表中的数据。我将 matrixcursor 传递给我的适配器,并将我的lazyloader 直接操作我传递给它的 imageview 更改为只调用 adapter.notiftdatasetchanged() ,这样效果更好。基本上我重写了很多代码,因为我的预感是它从 bindview 触发了很多异步任务,这把所有东西都搞砸了,所以我把它移到了 ui 线程,在那里它只会​​被正确地调用一次。

于 2012-11-02T11:45:14.467 回答