我目前正在显示一个项目列表,供用户根据他们喜欢该项目的数量来投赞成票和反对票。
假设有 3 个不同的项目,任务 1、任务 2、任务 3,每个项目都有 0 票。当我对一个项目投赞成票时,我希望它高于另一项,如果我投反对票,则它低于另一项。我通过一个列表适配器和一个扩展 BaseAdapter 的自定义类让它完美地工作,我现在唯一的问题是,如果我在我自己的客户端上并且我对一个项目进行了投票,而另一个用户也在对一个项目进行投票,它将刷新我的列表,并且不会显示本地用户不再单击该项目,因此他们可以无限次投票。
我目前有 2 个 Arraylists,一个包含所有项目,一个只包含被点击的项目,以及它们是被赞成还是被反对。
我认为可能调用 .notifyDataSetChanged() 可以解决这个问题,但目前它不起作用。
我目前使用 GCM 向主机用户发送一条消息,说明他们是赞成票还是反对票,主要主持人赞成/反对该项目并将新列表发送给所有其他客户端。
如果需要查看任何代码,请询问,谢谢您的帮助。
最佳答案
您可以只发送相关条目和对它的操作,并允许接收方更新自己的数据库。
我认为这样做的正确方法是为每个任务创建一个对象。每个都有自己的 UID(我在示例中使用了一个数字,但它需要是唯一的,所以也许不同的方式更好)。
然后你对这些对象有几个操作,这些操作在本地发生并且需要发送到服务器,例如。
{ "data": {
"uid": "1",
"operation": "new"
"task": "task1String"
}
接收方会将其添加到自己的数据库
{ "data": {
"uid": "1",
"operation": "upvote" / "downvote"
}
这样接收方就会知道改变由 UID 1
希望能帮助到你。