0

enter image description here

When I was clicking on like button the like value increase in all the childs but I want it to increase in the particular child

@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){
      }


 });
}

I took reference from this link please help me out

KENdi
  • 7,576
  • 2
  • 16
  • 31

2 Answers2

0

On Item Click get the Complete Object of Store.. Then ,

Model Class or DataClass Structure.

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

FireBase Database Structure:

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

now simply query using object Id. and add 1 to it.

@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){
      }


 });
}
Atif AbbAsi
  • 5,633
  • 7
  • 26
  • 47
0

try this,

@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){
      }


 });
}

Hope It's help full.

chetan mahajan
  • 349
  • 4
  • 15