UserPreviewAdapter.java

 1package eu.siacs.conversations.ui.adapter;
 2
 3import androidx.databinding.DataBindingUtil;
 4import androidx.annotation.NonNull;
 5import androidx.recyclerview.widget.ListAdapter;
 6import androidx.recyclerview.widget.RecyclerView;
 7import android.view.ContextMenu;
 8import android.view.LayoutInflater;
 9import android.view.View;
10import android.view.ViewGroup;
11
12import eu.siacs.conversations.R;
13import eu.siacs.conversations.databinding.UserPreviewBinding;
14import eu.siacs.conversations.entities.MucOptions;
15import eu.siacs.conversations.ui.XmppActivity;
16import eu.siacs.conversations.ui.util.AvatarWorkerTask;
17import eu.siacs.conversations.ui.util.MucDetailsContextMenuHelper;
18
19public class UserPreviewAdapter extends ListAdapter<MucOptions.User, UserPreviewAdapter.ViewHolder> implements View.OnCreateContextMenuListener {
20
21    private MucOptions.User selectedUser = null;
22
23    public UserPreviewAdapter() {
24        super(UserAdapter.DIFF);
25    }
26
27    @NonNull
28    @Override
29    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int position) {
30        return new ViewHolder(DataBindingUtil.inflate(LayoutInflater.from(viewGroup.getContext()), R.layout.user_preview, viewGroup, false));
31    }
32
33    @Override
34    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
35        final MucOptions.User user = getItem(position);
36        AvatarWorkerTask.loadAvatar(user, viewHolder.binding.avatar, R.dimen.media_size);
37        viewHolder.binding.getRoot().setOnClickListener(v -> {
38            final XmppActivity activity = XmppActivity.find(v);
39            if (activity != null) {
40                activity.highlightInMuc(user.getConversation(), user.getName());
41            }
42        });
43        viewHolder.binding.getRoot().setOnCreateContextMenuListener(this);
44        viewHolder.binding.getRoot().setTag(user);
45        viewHolder.binding.getRoot().setOnLongClickListener(v -> {
46            selectedUser = user;
47            return false;
48        });
49    }
50
51    @Override
52    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
53        MucDetailsContextMenuHelper.onCreateContextMenu(menu, v);
54    }
55
56    public MucOptions.User getSelectedUser() {
57        return selectedUser;
58    }
59
60    class ViewHolder extends RecyclerView.ViewHolder {
61
62        private final UserPreviewBinding binding;
63
64        private ViewHolder(UserPreviewBinding binding) {
65            super(binding.getRoot());
66            this.binding = binding;
67        }
68    }
69}