/** * Sorting a given list using the internal comparator. * * This will be used each time after setting the user item * * */ protected void sortList(List<UserListItem> list){ Comparator comparator = (Comparator<UserListItem>) (u1, u2) -> { String s1 = ""; if(u1 != null && u1.getName() != null) { s1 = u1.getName(); } String s2 = ""; if(u2 != null && u2.getName() != null) { s2 = u2.getName(); } return s1.compareToIgnoreCase(s2); }; Collections.sort(list, comparator); }
@Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { int type = getItemViewType(position); final Object item = items.get(position); holder.itemView.setOnClickListener(view -> onClickSubject.onNext(item)); if(type == TYPE_HEADER) { HeaderViewHolder hh = (HeaderViewHolder) holder; String header = (String) item; hh.textView.setText(header); } if(type == TYPE_USER) { UserViewHolder uh = (UserViewHolder) holder; UserListItem user = (UserListItem) item; uh.nameTextView.setText(user.getName()); uh.availabilityImageView.setImageResource(AvailabilityHelper.imageResourceIdForAvailability(user.getAvailability())); uh.statusTextView.setText(user.getStatus()); Timber.v("User: " + user.getName() + " Availability: " + user.getAvailability()); uh.avatarImageView.setImageURI(user.getAvatarURL()); if (isMultiSelect && user instanceof User) { uh.checkBox.setVisibility(View.VISIBLE); uh.checkBox.setChecked(selectedUsersPositions.get(position)); uh.availabilityImageView.setVisibility(View.INVISIBLE); } else { uh.availabilityImageView.setVisibility(View.VISIBLE); } } }