Android GCM / Listview更新

我目前正在显示一个项目列表,供用户根据他们喜欢该项目的数量进行upvote和downvote.

比如说有3个不同的项目,任务1,任务2,任务3,每个项目都有0票.当我对一个项目进行投票时,我希望它超越另一个项目,如果我向下投票,则低于另一项.我通过列表适配器和扩展BaseAdapter的自定义类完美地工作,我现在唯一的问题是,如果我在我自己的客户端上并且我支持一个项目而另一个用户也正在推销一个项目,它将刷新我的列表,它不会显示本地用户再点击该项目,因此他们可以无限次地投票.

我目前有2个Arraylists,一个包含所有项目,一个只包含点击的项目以及是否被投票或投票.
我想可能会调用.notifyDataSetChanged()来解决这个问题,但目前它还没有用.

我目前使用GCM向主机用户发送一条消息,说明他们是upvote或downvote,主要主机upvotes / downvotes该项目并将新列表发送给所有其他客户端.

如果需要任何代码才能看到,请感谢您的帮助.

最佳答案 您只能发送相关条目和操作,并允许接收方更新自己的数据库.

我认为这样做的正确方法是为每个任务创建一个对象.每个都有自己的UID(我在示例中使用了一个数字,但它需要是唯一的,所以可能不同的方式更好).

然后,您对这些对象进行了多次操作,这些操作在本地发生,例如需要发送到服务器.

>添加新任务将发送到您的服务器

{ "data": {
    "uid": "1",
    "operation": "new"
    "task": "task1String"
}

接收方将把它添加到自己的数据库中
>向上/向下投票任务将发送到您的服务器

{ "data": {
    "uid": "1",
    "operation": "upvote" / "downvote"
}

并且这样接收方将知道改变由UID 1识别的任务的投票
> ……

希望能帮助到你.

点赞