点击事件不会在RecyclerView中冒出来

时间:2014-12-02 09:31:26

标签: android events android-view

我想知道如果我在click内点击,RecyclerView事件为什么不会冒出来。

我的方案使用简单的RecyclerView来显示一些TextView,而其父View已注册OnClickListener,以便在有人点击视图时执行某些操作。 如果我点击例如TextView点击事件正确地冒泡到父级。但是如果我点击RecyclerView,点击就不会冒出来。 奇怪的是,如果我直接在OnClickListener上设置RecyclerView,它也永远不会被解雇。我认为那是万恶之源。

那么,为什么我的RecyclerView没有收到任何点击事件?为什么其父母没有收到任何点击事件?

层次结构如下所示:

- View (has an OnClickListener)  <- Why no clicks?
    - RecyclerView (clickable=false)
        - TextView
        - TextView
        ....

我使用setFocusable()setClickable()进行了实验,但没有运气。

PS:我当前的解决方案在OnClickListener内的每个TextView上设置了RecyclerView,并使用getParent()使用performClick()将点击传播到父视图手动

1 个答案:

答案 0 :(得分:0)

我使用RecyclerView的特殊类处理程序RecyclerView.OnItemTouchListener。我可以从消费类中添加。以下是处理程序类的默认实现:

recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener(){

        @Override
        public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
            //Put your code here.
            //Called 2 times per touch, on pressdown and on release.

            return false; //true will disable scroll view. 
        }

        @Override
        public void onTouchEvent(RecyclerView rv, MotionEvent e) {
            setDefaultBottomBar();
        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

        }
    });