2017-07-29 78 views
-2

我在RecyclerView內部的ImageView上添加點擊偵聽器。我的問題是,如果用戶重複點擊ImageView,它會打開下一個活動2-3次。任何想法如何處理它?在視圖上處理多個點擊

+0

的可能的複製[快速接頭(點擊)上RecyclerView打開多個片段(https://stackoverflow.com/questions/31868874/fast-taps-clicks-on -recyclerview-opened-multiple-fragments) – Pipiks

+0

添加您的代碼片段 – Anil

回答

0

由於Pipiks說, 去款項答案,

您可以修改您的適配器是這樣的。

public class ViewHolder extends RecyclerView.ViewHolder implements 
     View.OnClickListener { 
    TextView tvTitle, tvDescription; 
    private long mLastClickTime = System.currentTimeMillis(); 
    private static final long CLICK_TIME_INTERVAL = 300; 

public ViewHolder(View itemView) { 
    super(itemView); 
    itemView.setClickable(true); 
    itemView.setOnClickListener(this); 

    tvTitle = (TextView) itemView.findViewById(R.id.tv_title); 
    tvDescription = (TextView) itemView 
      .findViewById(R.id.tv_description); 
} 

@Override 
public void onClick(View v) { 
    long now = System.currentTimeMillis(); 
    if (now - mLastClickTime < CLICK_TIME_INTERVAL) { 
     return; 
    } 
    mLastClickTime = now; 
    mListener.onClick(FRAGMENT_VIEW, getAdapterPosition()); // open 
                  // FRAGMENT_VIEW 
} 
} 
0

您可以通過使用布爾變量來處理雙擊。 當你點擊一次圖像時,你的第一個點擊代碼將工作,然後在2秒鐘之前你點擊圖像,然後雙擊被調用。

boolean double_click = false; 

imageView.setOnClickListner(new OnClickListner) 
{ 
    @override 
    public onClick() 
    {    
     if(double_click) 
     { 
      //handle second click 
      Toast(context,"second click", Toast.LENGTH_SHORT).show(); 
     } 

     double_click = true; 
     //handle first click 
     Toast(context,"first click", Toast.LENGTH_SHORT).show(); 

     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       double_click = false;      
      } 
     }, 2000);  
    } 
}); 
0

試試這個

private long mLastClickTime = System.currentTimeMillis(); 
private static final long CLICK_TIME_INTERVAL = 300; 

@Override 
public void onClick(View v) { 
    long now = System.currentTimeMillis(); 
    if (now - mLastClickTime < CLICK_TIME_INTERVAL) { 
     return; 
    } 
    mLastClickTime = now; 
    mListener.onClick(FRAGMENT_VIEW, getAdapterPosition()); // open 
                  // FRAGMENT_VIEW 
} 
+0

什麼是CLICK_TIME_INTERVAL? – user3913975

+0

@ user3913975檢查更新的答案 –