2015-10-18 130 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除了共享按鈕之外的任何地方我需要轉到觸摸監聽器的單擊處理的另一個活動,但是當我點擊共享按鈕時,觸摸監聽器首先被觸發,導致它轉到另一個活動,然後點擊偵聽器被激發共享,我需要將這兩個事件分開。 –