package com.quickblox.sample.chat.ui.adapter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import com.quickblox.users.model.QBUser; import java.util.ArrayList; import java.util.List; public class CheckboxUsersAdapter extends UsersAdapter { private List<Integer> initiallySelectedUsers; private List<QBUser> selectedUsers; public CheckboxUsersAdapter(Context context, List<QBUser> users) { super(context, users); this.selectedUsers = new ArrayList<>(); this.selectedUsers.add(currentUser); this.initiallySelectedUsers = new ArrayList<>(); } public void addSelectedUsers(List<Integer> userIds) { for (QBUser user : objectsList) { for (Integer id : userIds) { if (user.getId().equals(id)) { selectedUsers.add(user); initiallySelectedUsers.add(user.getId()); break; } } } } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); final QBUser user = getItem(position); final ViewHolder holder = (ViewHolder) view.getTag(); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!isAvailableForSelection(user)) { return; } holder.userCheckBox.setChecked(!holder.userCheckBox.isChecked()); if (holder.userCheckBox.isChecked()) { selectedUsers.add(user); } else { selectedUsers.remove(user); } } }); holder.userCheckBox.setVisibility(View.VISIBLE); holder.userCheckBox.setChecked(selectedUsers.contains(user)); return view; } public List<QBUser> getSelectedUsers() { return selectedUsers; } @Override protected boolean isAvailableForSelection(QBUser user) { return super.isAvailableForSelection(user) && !initiallySelectedUsers.contains(user.getId()); } }