2015-10-18 124 views
0

我为回收视图实施了触摸侦听器,并且它对单击事件和双击事件起到了很好的作用,它返回了我单击的视图,但我想知道视图那是在该视图持有者中点击的。究竟可以做到这一点?获取在回收视图中点击的视图

ViewHolder

这是每一个项目看起来像view.What我需要做的是,当用户点击它只是触发一个意向共享数据的共享图标回收,但是当比份额以外的任何点击它应该去另一个屏幕提供进一步的细节,我也需要听长按,这样我才能删除长按的项目。

+2

你的意思是什么参数的观点*但我想知道被点击的视图* – Blackbelt

+0

@Blackbelt当你有ViewHolder与textview和imageView(例如)他想知道他的imageview被挖掘,而不仅仅是视图持有人被点击。反正OP,我建议使用方法,你在你的视图中实现OnClickListener并使用接口。当我尝试它时,触摸监听器对我来说不够灵活(尽管它可能是可能的)。 – poss

+0

@Blackbelt究竟是什么poss说。如果我有我的视图持有人内的图像我想知道什么时候图像被点击specific.poss我已经尝试了点击监听器的工作,但触摸事件也同时火灾。当点击事件响应时,您停止触发事件触发。 –

回答

0

一个实现它的方法是声明的接口,像

public interface OnRecyclerViewItemClick { 
    void onItemClick(View view, int position); 
} 

,让你Fragment/Activity实现它。请在您的RecyclerView.Adapter中提及它,并将其传递给您的ViewHolder。后者器具View.OnClickListener过了,你设置this如点击监听所有你感兴趣的检索点击事件

public static class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

    private OnRecyclerViewItemClick mItemClick; 

    public MyViewHolder(View v, OnRecyclerViewItemClick listener) { 
     super(v); 
     mItemClick = listener; 
     v.findViewById(R.id.image_view).setOnClickListener(this); 
     v.findViewById(R.id.text_view).setOnClickListener(this); 
    } 


    @Override 
    public void onClick(View v) { 
     if (mItemClick != null) { 
      mItemClick.onItemClick(v, getAdapterPosition()); 
     } 
    } 
} 

你可以添加你需要的接口的方法

+0

更新了这个问题,以提供一些有关我正在尝试做的事情的信息。我已经实现了点击侦听器,它正在工作,但触摸侦听器也同时触发,我需要根据每个事件执行单独的任务。当'onItemClick'被触发时, –

+0

。检查view.getId()并相应地执行其值 – Blackbelt

+0

OnClick除了共享按钮之外的任何地方我需要转到触摸监听器的单击处理的另一个活动,但是当我点击共享按钮时,触摸监听器首先被触发,导致它转到另一个活动,然后点击侦听器被激发共享,我需要将这两个事件分开。 –