如何跟踪"喜欢" android上的系统?

时间:2015-12-01 22:38:09

标签: java android

我目前正在为一位摄影师制作Android应用程序,他将在RecyclerView中显示他的图像。我们希望有点像"喜欢"功能他们可以喜欢他的照片。我的问题是,我如何跟踪"喜欢"?我的意思是,我怎么能做到这一点,如果有人已经喜欢它,他们无法退出应用程序,回来再喜欢它?我想在每次数据库中的图像属性都有类似的时候添加+1,但是如何防止它们退出应用程序,回来并再次喜欢它? TIA!

5 个答案:

答案 0 :(得分:4)

你的问题只是身份问题。为了实现你的目标,你应该有办法识别每张图片和每个放弃投票的人。

如果您可以识别不同的图片和不同的用户,您可以通过以下任一方式实现目标:

  1. 对于每张图片,存储所有喜欢它的用户。每当用户想要拍照时,你应该检查他是否在这个系列中。只有当他不在这个集合中时才会将用户的身份添加到此集合中,这意味着他之前不喜欢这张图片
  2. 或者您可以存储用户喜欢的所有图片。
  3. 哪种方式更好取决于您的其他用例。

    要识别图片,您只需为每张图片指定一个不同的名称即可。 因此,您可以看到关键问题如何识别您的用户

    由于您未提供类似操作的详细用例,我将介绍一些一般性提示。

    • 如果您有服务器
      • 如果用户必须登录,您可以通过登录ID识别您的用户
      • 如果您的用户不需要登录,您可以使用其他一些信息来识别您的用户,例如他们的设备ID,MAC地址或其他特定于设备的身份。
    • 如果您没有服务器,那么如何识别使用同一设备的所有用户?我能想到的唯一方法是,你必须实现一个本地用户系统并要求用户在他们想要一张照片之前登录。

答案 1 :(得分:0)

如果你有这样的签约用户我猜是你不能。您可以在设备上的隐藏文件中保存设备“喜欢”的照片的ID,但如果用户删除应用缓存文件或卸载/重新安装,则可以轻松删除。

这里不是Android专家,只是mho

答案 2 :(得分:0)

登录时: 在您的数据库中有" User"," Image"和" User_like_image" 您只需要检查此用户是否已经对图像进行了投票

没有登录: 您在本地存储他投票的每张图片的ID

答案 3 :(得分:0)

一个粗略的想法:每个可以被喜欢的项目都会存储一个在服务器上喜欢它的ID列表。您的计数等于列表长度。

在每个设备上生成随机设备ID令牌(UUID.randomUUID()始终是一个很好的候选者),在设备上本地保留(例如在SharedPreferences - 擦除应用程序数据会杀死它但是可以不可靠地解决,并在每次请求时将其发送到服务器。

服务器现在可以

  1. 告诉您是否已经喜欢在设备上看到的图像和
  2. 拒绝来自同一设备的多个喜欢
  3. 一种更简单的方法:在本地存储SharedPreferences你喜欢这个项目。然后表现得很好,当你看到你已经做过时,不要向你的服务器后端发送另一个请求。可以滥用,因为它不依赖客户端软件,但我怀疑一个小型摄影师应用程序需要过多关注它。

    更精细的方法:需要用户帐户。这适用于各种设备,并通过应用程序卸载持续存在。远远不足以创建多个帐户进行多次投票的人无论如何都无法停止。最大的缺点是人们很可能不想仅仅为了喜欢一些照片而拥有另一个帐户。不建议如果可以避免。

答案 4 :(得分:0)

我为避免让人们两次喜欢相同物品而做的是:

使用相同的按钮具有2个状态。如果单击“喜欢”,则按钮状态将更改为“删除喜欢”,将按钮的状态保存在共享的首选项中,并在单击之前检查该状态。

示例:

button =(Button)findViewById(R.id.button1);

button.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View arg0) {
    String ButtonText = button.getText().toString();
    if(ButtonText.equals("Like"){
        //code for Like

        button.setText("Remove Like");
    }
    else{
        //code for remove Like
        button.setText("Like");
    }
}

});