点击问题的Recyclerview子项目

时间:2015-11-30 09:40:27

标签: android gridview android-recyclerview

我在网格设置中有一个Reyclerview。

它的外观如何

enter image description here

我的问题是 我已经在我的recyclerview子卡中实现了红色按钮的onTouchListeners,以及Touch上的整个卡片。

[听我的适配器中红色按钮的onTouch事件 和片段中的recyclerview整个孩子的OnItemTouchListener]

现在,当我点击红色按钮时 点击监听器都会触发

我如何确保当我点击红色按钮时只触发了onTouchListener,而不是整个卡onItemTouch监听器?

在正常的gridview中 onclick听众没有重叠,当我点击红色的只有onclick2被解雇时,当我点击整张卡onclick1解雇时

感谢您提供有关这方面的任何指示或帮助

代码段:

mRecyclerApps.addOnItemTouchListener(
                new RecyclerItemClickListener(context, new RecyclerItemClickListener.OnItemClickListener() {
                    @Override public void onItemClick(View view, int position) {
                        startActivity(context.getPackageManager().getLaunchIntentForPackage(installedApps.get(position).getPackageName() ));
                    }
                })
        );

适配器中的红色区域onTouchListener

 holder._appInfo.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                Toast.makeText(_ctx, "info button Clicked for " + position, Toast.LENGTH_LONG).show();
                return false;
            }
        });

使用onClickListener也没有帮助,提供相同的输出

holder._appInfo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(_ctx, "info button Clicked for " + position, Toast.LENGTH_LONG).show();
            }
        });

1 个答案:

答案 0 :(得分:1)

你做错了, 您无法在儿童触摸内添加 itemtouchlistener , 您需要做的就是让视图触摸,并触摸孩子

//parent touch event
holder.main_view.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            // parent touch login
            return false;
        }
    });
//child touch event
holder._appInfo.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            Toast.makeText(_ctx, "info button Clicked for " + position, Toast.LENGTH_LONG).show();
            return false;
        }
    });