I am in the sitatuion where I have to get firebase database ref from Callback. It is working pretty fine since I am able to read/write to the database.
public void readData(final MyCallback myCallback) {
mCurrentUserDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String university = dataSnapshot.child("university").getValue().toString();
String groupid = dataSnapshot.child("groupid").getValue().toString();
//Having acquired university and group ID, now we can get reference to group members list
mMembersDatabase = FirebaseDatabase.getInstance().getReference().child("Universities").child(university).child("Groups").child(groupid).child("Members");
myCallback.onCallback(mMembersDatabase);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
}
Then, in onStart() method of my activity, I am creating my FirebaseRecyclerAdapter. Since it requires 4 parameters:
- model class
- resource layout file
- view holder class
- firebase database reference
I need to pass the firebase database ref i am getting from the my Callback as a parameter. I tried the following in onStart(), but it is not working.
readData(new MyCallback() {
@Override
public void onCallback(DatabaseReference databaseReference) {
FirebaseRecyclerAdapter<Groupmates, GroupmatesViewHolder> firebaseRecyclerAdapter =
new FirebaseRecyclerAdapter <Groupmates, GroupmatesViewHolder> (
Groupmates.class,
R.layout.users_single_layout,
GroupmatesViewHolder.class,
databaseReference
) {
@Override
protected void populateViewHolder(final GroupmatesViewHolder groupmatesViewHolder, final Groupmates groupmates, final int position) {
//SOME LOGIC HERE
}
};
//Finally, setting the ready adapter to the RecyclerView
mGroupmatesList.setAdapter(firebaseRecyclerAdapter);
}
});
I am receiving null object reference exception if I try to create FirebaseRecyclerAdapter outside of my Callback.
I can't really get my way out of it. Any suggestions would be helpful.