首页 > 解决方案 > 同时使用 OnTouchListener 和 OnClickListener

问题描述

我有一个recyclerview。设置适配器后,用户应重新排序列表并保存。之后它应该像保存的一样填充。但是在单击列表项时,它的颜色必须改变,其中一项将打开一个弹出窗口。我已经编写了代码,但是当我同时添加 onclick 和 ontouch 时,它们都不起作用。如果我评论其中一个,它们工作正常。我该如何解决这个问题?

        holder.itemView.setOnTouchListener((v, event) -> {
        if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
            touchHelper.startDrag(holder);
        }
        return false;
    });


    holder.clData.setOnLongClickListener(view -> {
        row_index = position;
        notifyDataSetChanged();
        return true;
    });

    if (row_index == position) {
        holder.clData.setBackgroundColor(context.getResources().getColor(R.color.blue_back));
        holder.txtAmount.setTextColor(Color.WHITE);
    } else {
        holder.clData.setBackgroundColor(context.getResources().getColor(R.color.darkestGrey));
        holder.txtAmount.setTextColor(context.getResources().getColor(R.color.blue_current));
    }
    /// https://github.com/sjthn/RecyclerViewDemo/blob/advanced-usecases/app/src/main/java/com/example/srijith/recyclerviewdemo/SwipeAndDragHelper.java
    ////// My Adapter 
     AdapterDatas adapter = new AdapterDatas (context, lstDatas);
        SwipeAndDragHelper swipeAndDragHelper = new SwipeAndDragHelper(adapter);
        ItemTouchHelper touchHelper = new ItemTouchHelper(swipeAndDragHelper);
        adapter.setTouchHelper(touchHelper);
        rvDatas.setAdapter(adapter);
        touchHelper.attachToRecyclerView(rvDatas);

标签: javaandroid

解决方案


推荐阅读