I'm using the firebase Database at the Android Studio. Code java. I use realtime database. I'm doing a Chat app. I want to pull the last message to the adapter that I created. But no data is showing. Where am I doing wrong?
my fragment class:
RecyclerView recylerchatlist;
DatabaseReference Lastref ;
FirebaseAuth mAuth ;
String currentUserID ;
private final List<LastMessageModel> postList =new ArrayList<>();
private int itemPos = 0;
private String mLastKey = "";
private String mPrevKey = "";
static final int total_ITEMS = 30 ;
int currentpage = 1 ;
LinearLayoutManager linearLayoutManager ;
MessageFragmentAdapter messageFragmentAdapter ;
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View messagefragment = inflater.inflate(R.layout.fragment_message,container,false);
mAuth = FirebaseAuth.getInstance();
currentUserID = mAuth.getCurrentUser().getUid();
Lastref = FirebaseDatabase.getInstance().getReference().child("Lastmessage");
recylerchatlist;= messagefragment.findViewById(R.id.chats_list);
messageFragmentAdapter = new MessageFragmentAdapter(postList);
recylerchatlist.setHasFixedSize(true);
linearLayoutManager = new LinearLayoutManager(getContext());
linearLayoutManager.setReverseLayout(true);
linearLayoutManager.setStackFromEnd(true);
recylerchatlist.setLayoutManager(linearLayoutManager);
recylerchatlist.setAdapter(messageFragmentAdapter);
getalllastmessage();
return messagefragment;
public void getalllastmessage(){
Lastref.child(currentUserID).orderByChild("timestamp").limitToLast(currentpage*total_ITEMS).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
try {
LastMessageModel lastMessageModel = dataSnapshot.getValue(LastMessageModel.class);
itemPos++;
if(itemPos == 1){
String messageKey = dataSnapshot.getKey();
mLastKey = messageKey;
mPrevKey = messageKey;
}
postList.add(lastMessageModel);
messageFragmentAdapter.notifyDataSetChanged();
recylerchatlist.smoothScrollToPosition(recylerchatlist.getAdapter().getItemCount());
recylerchatlist.scrollToPosition(postList.size() - 1);
recylerchatlist.setVisibility(View.VISIBLE);
}catch (Exception e){
}
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
model class:
public class LastMessageModel {
public String data ,type , message , from , timestamp, name;
public LastMessageModel(){
}
public LastMessageModel(String data, String type, String message, String from, String timestamp, String name) {
this.data = data;
this.type = type;
this.message = message;
this.from = from;
this.name = name;
this.timestamp = timestamp;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
}
my custom adapter;
public class MessageFragmentAdapter extends RecyclerView.Adapter<MessageFragmentAdapter.MessageFragmentViewHolder> {
private List<LastMessageModel> postList;
private FirebaseAuth mAuth;
String currentUserid ;
DatabaseReference Lastref ;
public MessageFragmentAdapter(List<LastMessageModel> postList) {
this.postList = postList ;
}
public class MessageFragmentViewHolder extends RecyclerView.ViewHolder{
CircleImageView profileImage ;
ImageView onlinestatus , seenstatus;
TextView userMessage , userName , userTime;
View mView;
public MessageFragmentViewHolder(@NonNull View itemView) {
super(itemView);
mView= itemView;
profileImage =itemView.findViewById(R.id.messageprofileimageee);
userName =itemView.findViewById(R.id.messagenameee);
userMessage=itemView.findViewById(R.id.messageinfooo);
onlinestatus =itemView.findViewById(R.id.onlinestatus);
seenstatus =itemView.findViewById(R.id.seenstatus);
userTime =itemView.findViewById(R.id.messagetime);
}
}
@NonNull
@Override
public MessageFragmentViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view =LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.message_list_model,viewGroup,false);
mAuth = FirebaseAuth.getInstance();
currentUserid = mAuth.getCurrentUser().getUid();
Lastref = FirebaseDatabase.getInstance().getReference().child("Lastmessage");
return new MessageFragmentViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final MessageFragmentAdapter.MessageFragmentViewHolder messageFragmentViewHolder, int i) {
final LastMessageModel lastMessageModel = postList.get(i);
messageFragmentViewHolder.userName.setText(lastMessageModel.getName());
messageFragmentViewHolder.userMessage.setText(lastMessageModel.getMessage());
}
@Override
public int getItemCount() {
return postList.size();
}
}
I have this database :