Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何为recyclerview项的每个元素添加触摸侦听器。_Android_Android Recyclerview_Touch Event - Fatal编程技术网

Android 如何为recyclerview项的每个元素添加触摸侦听器。

Android 如何为recyclerview项的每个元素添加触摸侦听器。,android,android-recyclerview,touch-event,Android,Android Recyclerview,Touch Event,我的情况是: -我有一个包含复杂项目的RecyclerView(许多图像视图、文本…) -我使用4个ImageView作为4个按钮(喜欢、评论、共享、不喜欢) -我想对每个按钮使用TouchListener,因为我想控制动画,还需要单击事件。(我知道如何为每个项目使用ClickListener,所以请关注TouchEvent)例如:新闻提要上每个故事的Facebook评论按钮,当您触摸按钮时,动画缩放图标。单击事件,释放按钮后继续 问题是:通过使用recyclerView.findChildVi

我的情况是: -我有一个包含复杂项目的RecyclerView(许多图像视图、文本…) -我使用4个ImageView作为4个按钮(喜欢、评论、共享、不喜欢) -我想对每个按钮使用TouchListener,因为我想控制动画,还需要单击事件。(我知道如何为每个项目使用ClickListener,所以请关注TouchEvent)例如:新闻提要上每个故事的Facebook评论按钮,当您触摸按钮时,动画缩放图标。单击事件,释放按钮后继续


问题是:通过使用recyclerView.findChildViewUnder(x,y),我只能获得每个项目的父视图(例如:LinearLayout包含每个项目的其他组件)

因此,如何知道在使用clickListener时单击了哪个按钮: -按钮1.设置ClickListener(此); -按钮2.设置ClickListener(此);(在视图持有人上) 在活动或片段中的捕获事件之后: -开关(view.getId()){ 案例R.id.button1:…做点什么;打破; 案例R.id.按钮2:……做点什么;打破; .... 我整天都在谷歌上搜索这个问题,但所有的样本和答案都像我上面说的那样使用ClickListener


谢谢!

像这样使用内置的recyclerview适配器

@Override
        public void onBindViewHolder(final RecyclerViewAdapterA.ViewHolder_a holder, final int position) {
      holder.button.setOnClickListener(new View.OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                // TODO Auto-generated method stub




                            }
                        });

您可以通过获取父视图

View parent = recyclerView.findChildViewUnder(x,y);
现在您可以很容易地获得其相应的视图,例如

Button button = (Button)parent.findViewById(R.id.button);

希望你能理解!!!

请发布你的适配器代码。你想让监听器对你的活动或片段做出反应,对吗?这没问题。我想捕捉每项recyclerView上每个按钮的触摸事件。例如:我触摸按钮1,捕捉触摸事件(上移,下移)或手势监听器(onDown,onSingleTabUp,onLongPress…)@bpAFee,但如果是这样的话,你知道我刚才按了哪个按钮吗?那将是从你的父视图中得到的,你可以通过RecycleView.FindChildViewEnder(x,y);RecycleView.FindChildViewEnder(x,y)->这个方法返回绑定视图,整个项目的父视图不是确切的子项目