Android 动态更新gridview中的对象从IntentService更新其属性
我有一个GridView,其中每个项目都显示有关对象的信息。接下来,我有一个IntentService,其中包含一些可运行的任务。最后,还有一个自定义适配器,它是从BaseAdapter扩展而来的,带有项目的ArrayList。IntentService和Gridview之间的通信通过适配器中的BroadcastRecipver进行,适配器接收一个名为Thumb的特殊对象,Thumb是一个可包裹的对象,作为Intent的额外对象 到目前为止,一切都是典型的 现在,当任务在其runnable对象内的服务中启动时,我发送一个空Thumb(如意图所示)。因此,GridView向用户显示一个表示此时正在执行的任务的项,当任务完成时,该项将用新信息刷新 我的问题是:如何在GridView中动态刷新对象的信息? 方法1 我的第一个想法(我认为性能上最昂贵的)是:当一个意图出现空拇指时,我将把它添加到ArrayList中,并通知适配器。然后,当第二个意图带有“full”Thumb时,我将在ArrayList中搜索它,并用另一个替换它Android 动态更新gridview中的对象从IntentService更新其属性,android,android-intent,android-service,android-gridview,Android,Android Intent,Android Service,Android Gridview,我有一个GridView,其中每个项目都显示有关对象的信息。接下来,我有一个IntentService,其中包含一些可运行的任务。最后,还有一个自定义适配器,它是从BaseAdapter扩展而来的,带有项目的ArrayList。IntentService和Gridview之间的通信通过适配器中的BroadcastRecipver进行,适配器接收一个名为Thumb的特殊对象,Thumb是一个可包裹的对象,作为Intent的额外对象 到目前为止,一切都是典型的 现在,当任务在其runnable对象内
- (+)易于实现
- (-)表现不佳。我必须在ArrayList中搜索一个项目,检查它是否是同一个对象,然后替换它
- (+)性能非常好,因为我不需要对ArrayList进行操作
- (-)不起作用。(是的,一个很大的障碍)。所以我已经看到,如果我比较“空拇指”和“满拇指”之间的引用(=)是不同的。我认为这是因为Thumb是一个可打包的对象,它在不同线程的可运行任务中执行,当在内部进入BroadcastReceiver时,它会创建一个新对象或克隆Thumb。因此,对象是不同的。它是线程之间传递对象的“可序列化”机制李>
接下来,当一个“满拇指”出现时,我得到这个新位置列表的第一个位置,然后我在数组列表中用这个位置的满拇指替换空拇指,最后我从位置列表中删除这个位置。我认为性能上最昂贵的-你真的测试过这个位置吗,或者这是一个严格的意见(在这种情况下,您应该对其进行测试)?您的
Thumb
类是否具有可用于从其他Thumb对象中唯一标识对象的功能?我没有进行测试,因为第一种方法执行的操作更多(并且比第二种[作为列表中的搜索]更昂贵).我想生成一个像UUID或类似的ID,但最终我不需要它。下面我解释一下我最终是如何做到的。