Can`t create a view with drag&drop, on click, on long click and on double click listener

Viewed 25

I have a RecyclerView in which the elements will have the following logic: when clicked, the title of the element is shown, when dragged, the element is dragged, when long pressed, the description of the element is shown, when double-clicked, the element is used

Here is my code:

@Override
    public void onBindViewHolder(@NonNull view_holder holder, @SuppressLint("RecyclerView") int position) {
        GestureDetector gestureDetector = new GestureDetector(G.context, new GestureListener(holder,position));
        holder.item_layout.setOnTouchListener((v, event) -> gestureDetector.onTouchEvent(event));
    }

class GestureListener extends GestureDetector.SimpleOnGestureListener {
    view_holder holder;
    int position;
    public GestureListener(view_holder holder, int position) {
        this.holder = holder;
        this.position = position;
    }
    @Override
    public boolean onDown(MotionEvent e) {
    // Working
        drag_item(holder);
        return true;
    }
    @Override
    public boolean onSingleTapUp(@NonNull MotionEvent e) {
    // Not working
        show_item_title(holder,position);
        return true;
    }
    @Override
    public boolean onDoubleTap(MotionEvent e) {
    // Not working
        use_item(position);
        return true;
    }
    @Override
    public void onLongPress(@NonNull MotionEvent e) {
    // Not working
        show_item_description(items[position].item);
    }
}

When drag_item() function is called then working only onDown() function.

Here is drag_item():

    void drag_item(view_holder holder){
        String clip_text = "This is our clip text";
        ClipData.Item clip_item = new ClipData.Item(clip_text);
        String[] mime_types = new String[]{ClipDescription.MIMETYPE_TEXT_PLAIN};
        ClipData clip_data = new ClipData(clip_text,mime_types,clip_item);
        View.DragShadowBuilder drag_shadow_builder = new View.DragShadowBuilder(holder.item_view);
        holder.item_view.startDrag(clip_data,drag_shadow_builder,holder.item_view,0); // After that, the program does not work normally
    }

But when I remove drag_item() then all functions are working. I mean: onDown(), onSingleTapUp(), onDoubleTap() and onLongPress()

0 Answers
Related