Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class AllUsersFragment extends Fragment {
- private View mView;
- private RecyclerView mDCUserList;
- private FirebaseRecyclerAdapter<Users, UsersViewHolders> mUserAdapter;
- private FirebaseUser mCurrentUser;
- private DatabaseReference mUsersDatabase;
- private LinearLayoutManager mLinearLayoutManager;
- public DCUsersFragment() {
- // Required empty public constructor
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- initUiViews(inflater, container);
- initObjects();
- setUpRecyclerAdapter();
- return mView;
- }
- private void initUiViews(LayoutInflater inflater, ViewGroup container) {
- mView = inflater.inflate(R.layout.fragment_dcusers, container, false);
- mDCUserList = mView.findViewById(R.id.rv_dcusers_list);
- // mDCUserList.setHasFixedSize(true);
- mDCUserList.setLayoutManager(new LinearLayoutManager(getContext()));
- }
- private void initObjects() {
- mUsersDatabase = FirebaseDatabase.getInstance().getReference().child("users");
- mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
- mUsersDatabase.keepSynced(true);
- }
- private void setUpRecyclerAdapter() {
- Query usersQuery = mUsersDatabase.orderByKey();
- FirebaseRecyclerOptions usersOptions = new FirebaseRecyclerOptions.Builder<Users>()
- .setQuery(usersQuery, Users.class).build();
- mUserAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolders>(usersOptions) {
- @Override
- protected void onBindViewHolder(@NonNull UsersViewHolders holder, int position, @NonNull Users model) {
- final String user_id = getRef(position).getKey();
- if (user_id.equals(mCurrentUser.getUid())) {
- holder.layoutHide();
- return;
- }
- if (model.getStudent() != null) {
- String desc = model.getStudent().getYear() + " " + model.getStudent().getCourse();
- holder.setDesc(desc);
- } else {
- holder.setDesc("Teacher");
- }
- holder.setName(model.getName());
- holder.setImage(model.getThumbnail());
- holder.mView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent profileIntent = new Intent(getContext(), ProfileActivity.class);
- profileIntent.putExtra("user_id", user_id);
- startActivity(profileIntent);
- }
- });
- }
- @NonNull
- @Override
- public UsersViewHolders onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- View mView = LayoutInflater.from(parent.getContext())
- .inflate(R.layout.row_item_dc_users, parent, false);
- return new UsersViewHolders(mView);
- }
- };
- mUserAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
- @Override
- public void onItemRangeInserted(int positionStart, int itemCount) {
- super.onItemRangeInserted(positionStart, itemCount);
- int dcUsersCount = mUserAdapter.getItemCount();
- int lastVisiblePosition = mLinearLayoutManager
- .findLastCompletelyVisibleItemPosition();
- // If the recycler view is initially being loaded or the
- // user is at the bottom of the list, scroll to the bottom
- // of the list to show the newly added message.
- if (lastVisiblePosition == -1 || (positionStart >= (dcUsersCount -1)) &&
- lastVisiblePosition == (positionStart - 1)) {
- mDCUserList.scrollToPosition(positionStart);
- }
- }
- });
- mDCUserList.setAdapter(mUserAdapter);
- }
- public static class UsersViewHolders extends RecyclerView.ViewHolder {
- private View mView;
- private RelativeLayout mRootLayout;
- private RelativeLayout.LayoutParams mParams;
- public UsersViewHolders(View mView) {
- super(mView);
- this.mView = mView;
- }
- public void setName(String name) {
- TextView display_name = mView.findViewById(R.id.item_search_user_name);
- display_name.setText(name);
- }
- public void setImage(String image) {
- RoundedImageView display_image = mView.findViewById(R.id.item_search_user_picture);
- Picasso.get().load(image).placeholder(R.drawable.user).transform(new CircleTransform())
- .into(display_image);
- }
- public void setDesc(String desc) {
- TextView display_desc = mView.findViewById(R.id.item_search_user_desc);
- display_desc.setText(desc);
- }
- public void layoutHide() {
- mRootLayout = mView.findViewById(R.id.item_dc_users_layout);
- mParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.WRAP_CONTENT);
- mParams.height = 0;
- mRootLayout.setLayoutParams(mParams);
- }
- }
- @Override
- public void onResume() {
- super.onResume();
- mUserAdapter.startListening();
- }
- @Override
- public void onPause() {
- super.onPause();
- mUserAdapter.stopListening();
- }
- }
Add Comment
Please, Sign In to add comment