2015-09-03 30 views
0

我有一個使用RecyclerView和一個OnClickListener來處理項目點擊的列表。如何避免在RecyclerView OnClickListener上進行雙重選擇?

我用同樣的解決方案來自: Why doesn't RecyclerView have onItemClickListener()? And how RecyclerView is different from Listview?

public static class ViewHolder extends RecyclerView.ViewHolder implements OnClickListener { 

    public TextView txtViewTitle; 
    public ImageView imgViewIcon; 

    public ViewHolder(View itemLayoutView) { 
     super(itemLayoutView); 
     itemLayoutView.setOnClickListener(this); 
     txtViewTitle = (TextView) itemLayoutView.findViewById(R.id.item_title); 
     imgViewIcon = (ImageView) itemLayoutView.findViewById(R.id.item_icon); 
    } 

    @Override 
    public void onClick(View v) { 
     // start a new fragment 
    } 

} 

的問題是,如果我迅速地選擇兩個項目,它將執行的onClick()兩次,在這種情況下,啓動了兩個新的片段。

我做錯了什麼?避免這種情況的最佳方法是什麼?一個簡單的布爾標誌足以適用於所有情況嗎?

更新: 這是一個「包選擇屏幕」,您將選擇您要播放的包。然後它會顯示一個包含所選包的所有謎題的新片段。

謝謝!

+0

它似乎是正確的行爲給我...你嘩嘩該片段顯示兩個 – Onheiron

+0

不要緊的哪一個(也許是第一個),我只是不想打開兩個片段 – thiagolr

回答

1

您正在對onClick做正確的處理。試試這個:

@Override 
    public void onClick(View v) { 
     if(fragment is playing) { 
      return; 
     } 
     // start a new fragment 
    } 
+0

我不明白if語句,你能解釋得更好嗎? – thiagolr

+0

@thiagolr,如果您的目標片段可見,則不應再顯示它。看到這個:[如何知道,如果一個碎片是可見的](http://stackoverflow.com/questions/16652095/how-to-know-if-a-fragment-is-visible)。 – chad