Код: Выделить всё
isLiked(post.getPostId(), holder.like);
noOfLikes(post.getPostId(), holder.noOfLikes);
holder.like.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(holder.like.getTag().equals("Like")){
FirebaseDatabase.getInstance().getReference().child("Likes").child(post.getPostId())
.child(firebaseUser.getUid()).setValue(true);
}else{
FirebaseDatabase.getInstance().getReference().child("Likes").child(post.getPostId())
.child(firebaseUser.getUid()).removeValue();
}
}
});
Функции объявлены вне метода onBind:
Код: Выделить всё
private void isLiked(String postId, ImageView imageView){
final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Likes").child(postId);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.child(firebaseUser.getUid()).exists()){
imageView.setImageResource(R.drawable.liked);
imageView.setTag("liked");
} else {
imageView.setImageResource(R.drawable.like);
imageView.setTag("like");
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
private void noOfLikes(String postId,TextView text){
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Likes").child(postId);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
text.setText(dataSnapshot.getChildrenCount() + " likes");
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
LogCat следующей проблемы:
Код: Выделить всё
FATAL EXCEPTION: main
Process: com.example.instagramclone, PID: 8517
java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
at com.google.firebase.database.DatabaseReference.child(DatabaseReference.java:96)
at com.example.instagramclone.Adapter.PostAdapter.isLiked(PostAdapter.java:148)
at com.example.instagramclone.Adapter.PostAdapter.onBindViewHolder(PostAdapter.java:90)
at com.example.instagramclone.Adapter.PostAdapter.onBindViewHolder(PostAdapter.java:32)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
Подробнее здесь: https://stackoverflow.com/questions/783 ... pplication
Мобильная версия