猿问

单击行时无法转到新活动

我一直试图在单击 TextView 时显示一个选项菜单。我已经能够做到这一点。但是现在当我点击该行时,我无法进入下一个活动。

RecyclerTouchListener.java


public class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {


    private ClickListener clicklistener;

    private GestureDetector gestureDetector;


    public RecyclerTouchListener(Context context, final RecyclerView recycleView, final ClickListener clicklistener) {


        this.clicklistener = clicklistener;

        gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {

            @Override

            public boolean onSingleTapUp(MotionEvent e) {

                return true;

            }


            @Override

            public void onLongPress(MotionEvent e) {

                View child = recycleView.findChildViewUnder(e.getX(), e.getY());

                if (child != null && clicklistener != null) {

                    clicklistener.onLongClick(child, recycleView.getChildAdapterPosition(child));

                }

            }

        });

    }


    @Override

    public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {

        View child = rv.findChildViewUnder(e.getX(), e.getY());

        if (child != null && clicklistener != null && gestureDetector.onTouchEvent(e)) {

            clicklistener.onClick(child, rv.getChildAdapterPosition(child));

        }


        return false;

    }


    @Override

    public void onTouchEvent(RecyclerView rv, MotionEvent e) {


    }


    @Override

    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {


    }


    public interface ClickListener {

        void onClick(View view, int position);

        void onRowClick(View view, int position);

        void onLongClick(View view, int position);

    }

}

我在本网站上搜索了许多不同的文章,并尝试了成员发布的几种不同的解决方案,但我仍然无法进行新的活动。


你如何创建一个 onClickListener() 来监听主行上的点击,以及一个 TextView。


任何帮助将不胜感激。


慕勒3428872
浏览 155回答 3
3回答

白衣染霜花

解决方案:删除recyclerview.onTouchListener..... 我们不再需要它了。holder对象上的单击侦听器比这更好。请看下面的例子:类似于holder.bowlerLeagueId.setText(bowler.getLeagueId());你也可以写:holder.bowlerLeagueId.setOnClickListener(....) {      ........ (Write here)}然后,在您的 (Write here) 内容中,编写代码以导航到下一个活动。同样,您可以为任何 holder.viewid.setOnClick 等执行此操作。希望能帮助到你。

慕哥9229398

我可以知道您是否在清单文件中注册了 BowlerActivity?单击视图后,请附上日志。我看到您初始化了本地侦听器并实现了 onLongClick 和 onTouch,但是您没有设置 OnClick 事件并传输到自定义侦听器回调作为 OnRowClick 的视图
随时随地看视频慕课网APP

相关分类

Java
我要回答