想要在Firebase中添加赞计数器

时间:2018-10-17 10:24:31

标签: android firebase firebase-realtime-database

enter image description here

当我单击“赞”按钮时,所有孩子的“喜欢”值都会增加,但我希望特定孩子的价值增加

@Override
public void onItemClick(final int clickItemIndex) {
    databaseReference.child("Stories").orderByChild("show").equalTo("1").addListenerForSingleValueEvent(new ValueEventListener() {
      @Override
      public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
          for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
              String like = dataSnapshot1.child("like").getValue(String.class);
              int ll = Integer.parseInt(like);
              int l2 = ll + 1;
              String like2 = String.valueOf(l2);
                    databaseReference.child("Stories").child(dataSnapshot1.getKey()).child("like").setValue(like2);
          }
      }

      @Override
      public void onCancelled(@NonNull DatabaseError databaseError){
      }


 });
}

我从this链接中获得了参考,请帮助我

2 个答案:

答案 0 :(得分:0)

在商品上单击以获取完整的商店对象。 然后,

模型类或数据类结构。

Story->date
     ->like
    ->show
    ->story
    ->userName
    ->storyId

FireBase数据库结构:

stories->
       ->storyId->
         Story->date
         ->like
        ->show
        ->story
        ->userName
        ->storyId

现在只需使用对象ID进行查询。并添加1。

@Override public void onItemClick(final int clickItemIndex){

    databaseReference.child("Stories").orderByChild("show").equalTo("1").addListenerForSingleValueEvent(new ValueEventListener() {
      @Override
      public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
          for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
              String like = dataSnapshot1.child("like").getValue(String.class);
              int ll = Integer.parseInt(like);
              int l2 = ll + 1;
              String like2 = String.valueOf(l2);
                    databaseReference.child("Stories").child(story.getStoryId()).child("like").setValue(like2);
          }
      }

      @Override
      public void onCancelled(@NonNull DatabaseError databaseError){
      }


 });
}

答案 1 :(得分:0)

尝试一下

@Override
public void onItemClick(final int clickItemIndex) {
    databaseReference.child("Stories").orderByChild("show").equalTo("1").addListenerForSingleValueEvent(new ValueEventListener() {
      @Override
      public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
          for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
              String like = dataSnapshot1.child("like").getValue(String.class);
              int ll = Integer.parseInt(like);
              int l2 = ll + 1;
              String like2 = String.valueOf(l2);

           Map userInfo = new HashMap();
           userInfo.put("like", like2);
           databaseReference.child("Stories").child(dataSnapshot1.getKey()).updateChildren(userInfo);
          }
      }

      @Override
      public void onCancelled(@NonNull DatabaseError databaseError){
      }


 });
}

希望它能帮助您全部。