0

Full Code

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    rootView = inflater.inflate(R.layout.fragment_chats, container, false);


    noUsersText = (TextView) rootView.findViewById(R.id.noUsersText);
    mUsersList = (RecyclerView) rootView.findViewById(R.id.usersList);
    mUsersList.addItemDecoration(new DividerItemDecoration(getContext(),
            DividerItemDecoration.HORIZONTAL));

    mAuth = FirebaseAuth.getInstance();
    currentUser = mAuth.getCurrentUser();
    UID = mAuth.getCurrentUser().getUid();
    mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("UserData");


    mProgressDialogue = new ProgressDialog(getActivity());
    mProgressDialogue.setMessage("Loading...");
    mProgressDialogue.show();

    mUsersList.setLayoutManager(new LinearLayoutManager(getActivity()));

    FirebaseRecyclerOptions<AllUsers> options =
            new FirebaseRecyclerOptions.Builder<AllUsers>()
                    .setQuery(mDatabaseReference, AllUsers.class)
                    .build();

    firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<AllUsers, HomeScreen_Contacts.UsersViewHolder>(options) {

        @Override
        protected void onBindViewHolder(@NonNull HomeScreen_Contacts.UsersViewHolder holder, int position, @NonNull AllUsers model) {
            holder.setName(model.getName());
            holder.setStatus(model.getStatus());
            holder.setImage(model.getImage());

            final String userId = getRef(position).getKey();

            holder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference().child("UserData").child(userId);
                    rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            userName = dataSnapshot.child("Name").getValue().toString();
                            Intent intent = new Intent(getActivity(), Chat.class);
                            intent.putExtra("Recievers_Id", userId);
                            intent.putExtra("Recievers_Name", userName);
                            startActivity(intent);
                        }
                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                        }
                    });
                }
            });
}


        @Override
        public HomeScreen_Contacts.UsersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.all_users_layout, parent, false);
            return new HomeScreen_Contacts.UsersViewHolder(view);
        }
    };
    mUsersList.setAdapter(firebaseRecyclerAdapter);
    return rootView;
}


public static class UsersViewHolder extends RecyclerView.ViewHolder {
    View mView;

    public UsersViewHolder(View itemView) {
        super(itemView);
        mView = itemView;
    }

    public void setName(String name) {
        TextView mDisplayName = (TextView) mView.findViewById(R.id.display_name);
        mDisplayName.setText(name);
    }

    public void setStatus(String status) {
        TextView mDisplayStatus = (TextView) mView.findViewById(R.id.display_status);
        mDisplayStatus.setText(status);
    }

    public void setImage(String image) {
        CircularImageView mDisplayImage = (CircularImageView) mView.findViewById(R.id.circleImageView);
        Picasso.get().load(image).into(mDisplayImage);
    }
}

@Override
public void onStart() {
    super.onStart();
    firebaseRecyclerAdapter.startListening();
}
@Override
public void onStop() {
    super.onStop();
    if(firebaseRecyclerAdapter != null) {
        firebaseRecyclerAdapter.stopListening();
    }
}

I have to use a query order by from this fragment

My code

final ArrayList<AllUsers> messages = new ArrayList<>();
            mDatabaseReference.child(UID).orderByChild("LastMessage").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    if (dataSnapshot.exists()) {
    for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
    messages.add(dataSnapshot.getValue(AllUsers.class));
    }
    Collections.reverse(messages);
    }
    }
@Override
public void onCancelled(DatabaseError databaseError) {
    }
    });

But i don't know where to put this code... or is this even the right approach to what i'm trying to do.someone please help me out.stuck here since days.

Umair
  • 6,366
  • 15
  • 42
  • 50
  • your question is shallow, please indicate what you want to do, the code is fine and can be used in fragment – Lucem Jul 31 '18 at 09:25
  • Where should i put the code is my question –  Jul 31 '18 at 09:25
  • Just randomly in the oncreateview? will it work? –  Jul 31 '18 at 09:26
  • okay lemme answer – Lucem Jul 31 '18 at 09:33
  • **[This](https://stackoverflow.com/questions/49383687/how-can-i-retrieve-data-from-firebase-to-my-adapter/49384849)** is a recommended way in which you can retrieve data from a Firebase Realtime database and display it in a `RecyclerView` using `FirebaseRecyclerAdapter`. It will also work in a fragment. – Alex Mamo Jul 31 '18 at 10:08

1 Answers1

0

In the activity, we have onCreate as the method that runs when the activity starts and onCreateView in the Fragment. When starting firebase listeners on the activity, we use onStart and onStop which is the same case for the Fragment.

Put your code in the onCreateView

Lucem
  • 2,912
  • 3
  • 20
  • 33