UserPreviewAdapter.java

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