Guest User

Untitled

a guest
May 22nd, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.58 KB | None | 0 0
  1. public class AllUsersFragment extends Fragment {
  2.  
  3. private View mView;
  4. private RecyclerView mDCUserList;
  5.  
  6. private FirebaseRecyclerAdapter<Users, UsersViewHolders> mUserAdapter;
  7.  
  8. private FirebaseUser mCurrentUser;
  9. private DatabaseReference mUsersDatabase;
  10.  
  11. private LinearLayoutManager mLinearLayoutManager;
  12.  
  13. public DCUsersFragment() {
  14. // Required empty public constructor
  15. }
  16.  
  17.  
  18. @Override
  19. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  20. Bundle savedInstanceState) {
  21. initUiViews(inflater, container);
  22. initObjects();
  23. setUpRecyclerAdapter();
  24. return mView;
  25. }
  26.  
  27. private void initUiViews(LayoutInflater inflater, ViewGroup container) {
  28. mView = inflater.inflate(R.layout.fragment_dcusers, container, false);
  29. mDCUserList = mView.findViewById(R.id.rv_dcusers_list);
  30.  
  31. // mDCUserList.setHasFixedSize(true);
  32. mDCUserList.setLayoutManager(new LinearLayoutManager(getContext()));
  33. }
  34.  
  35. private void initObjects() {
  36. mUsersDatabase = FirebaseDatabase.getInstance().getReference().child("users");
  37. mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
  38.  
  39. mUsersDatabase.keepSynced(true);
  40. }
  41.  
  42. private void setUpRecyclerAdapter() {
  43. Query usersQuery = mUsersDatabase.orderByKey();
  44. FirebaseRecyclerOptions usersOptions = new FirebaseRecyclerOptions.Builder<Users>()
  45. .setQuery(usersQuery, Users.class).build();
  46.  
  47. mUserAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolders>(usersOptions) {
  48.  
  49. @Override
  50. protected void onBindViewHolder(@NonNull UsersViewHolders holder, int position, @NonNull Users model) {
  51. final String user_id = getRef(position).getKey();
  52.  
  53. if (user_id.equals(mCurrentUser.getUid())) {
  54. holder.layoutHide();
  55. return;
  56. }
  57.  
  58. if (model.getStudent() != null) {
  59. String desc = model.getStudent().getYear() + " " + model.getStudent().getCourse();
  60.  
  61. holder.setDesc(desc);
  62.  
  63. } else {
  64.  
  65. holder.setDesc("Teacher");
  66. }
  67.  
  68. holder.setName(model.getName());
  69. holder.setImage(model.getThumbnail());
  70.  
  71. holder.mView.setOnClickListener(new View.OnClickListener() {
  72.  
  73. @Override
  74. public void onClick(View v) {
  75.  
  76. Intent profileIntent = new Intent(getContext(), ProfileActivity.class);
  77. profileIntent.putExtra("user_id", user_id);
  78. startActivity(profileIntent);
  79.  
  80. }
  81. });
  82.  
  83. }
  84.  
  85. @NonNull
  86. @Override
  87. public UsersViewHolders onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
  88. View mView = LayoutInflater.from(parent.getContext())
  89. .inflate(R.layout.row_item_dc_users, parent, false);
  90. return new UsersViewHolders(mView);
  91. }
  92. };
  93.  
  94. mUserAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
  95.  
  96. @Override
  97. public void onItemRangeInserted(int positionStart, int itemCount) {
  98. super.onItemRangeInserted(positionStart, itemCount);
  99. int dcUsersCount = mUserAdapter.getItemCount();
  100. int lastVisiblePosition = mLinearLayoutManager
  101. .findLastCompletelyVisibleItemPosition();
  102.  
  103. // If the recycler view is initially being loaded or the
  104. // user is at the bottom of the list, scroll to the bottom
  105. // of the list to show the newly added message.
  106.  
  107. if (lastVisiblePosition == -1 || (positionStart >= (dcUsersCount -1)) &&
  108. lastVisiblePosition == (positionStart - 1)) {
  109. mDCUserList.scrollToPosition(positionStart);
  110. }
  111. }
  112. });
  113.  
  114. mDCUserList.setAdapter(mUserAdapter);
  115. }
  116.  
  117. public static class UsersViewHolders extends RecyclerView.ViewHolder {
  118.  
  119. private View mView;
  120. private RelativeLayout mRootLayout;
  121. private RelativeLayout.LayoutParams mParams;
  122.  
  123. public UsersViewHolders(View mView) {
  124. super(mView);
  125. this.mView = mView;
  126. }
  127.  
  128. public void setName(String name) {
  129. TextView display_name = mView.findViewById(R.id.item_search_user_name);
  130. display_name.setText(name);
  131. }
  132.  
  133. public void setImage(String image) {
  134. RoundedImageView display_image = mView.findViewById(R.id.item_search_user_picture);
  135. Picasso.get().load(image).placeholder(R.drawable.user).transform(new CircleTransform())
  136. .into(display_image);
  137. }
  138.  
  139. public void setDesc(String desc) {
  140. TextView display_desc = mView.findViewById(R.id.item_search_user_desc);
  141. display_desc.setText(desc);
  142. }
  143.  
  144. public void layoutHide() {
  145. mRootLayout = mView.findViewById(R.id.item_dc_users_layout);
  146. mParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
  147. ViewGroup.LayoutParams.WRAP_CONTENT);
  148.  
  149. mParams.height = 0;
  150. mRootLayout.setLayoutParams(mParams);
  151. }
  152. }
  153.  
  154. @Override
  155. public void onResume() {
  156. super.onResume();
  157. mUserAdapter.startListening();
  158. }
  159.  
  160. @Override
  161. public void onPause() {
  162. super.onPause();
  163. mUserAdapter.stopListening();
  164. }
  165. }
Add Comment
Please, Sign In to add comment