0

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 :

enter image description here

4

0 回答 0