7

RecyclerViewを使用してSwipeRefreshLayoutを実装しました。OnRefreshListenerの間にアダプタアイテムが無効になっている必要があります。SwipeRefreshLayout内のRecyclerViewのクリックを無効にする

私は、次のアプローチを試してみましたが、クリックが正常に行われます。

mRecyclerView.setEnabled(false); 
mRecyclerView.setClickable(false); 

答えて

14

我々はListAdapterとしていた使用ロジックを。これにより、アダプタ項目は無効になります。

public interface RecyclerViewItemEnabler{ 
    public boolean isAllItemsEnabled(); 
    public boolean getItemEnabled(int position); 
} 

と実装は次のようになります。

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements RecyclerViewItemEnabler{ 

    @Override 
    public void onViewAttachedToWindow(RecyclerView.ViewHolder holder) { 
     super.onViewAttachedToWindow(holder); 
     holder.itemView.setEnabled(isAllItemsEnabled()); 
     //or do this in onBindViewHolder() 
    } 
    @Override 
    public boolean isAllItemsEnabled(){ return mAllEnabled; } 

    @Override 
    public boolean getItemEnabled(int position){ 
     return true; 
    } 
    public void setAllItemsEnabled(boolean enable){ 
     mAllEnabled = enable; 
     notifyItemRangeChanged(0, getItemCount()); 
    } 

} 

使用法: mRecylerAdapter.setAllItemsEnabled(!mSwipeRefreshLayout.isRefreshing());

+0

作品罰金!非常にありがとう@NikolaDespotoski! – falvojr

+1

何らかの理由でそれは私のためには機能しません。すべてのアイテムをクリックできるだけでなく、すべてのアイテムも同時にクリックすると点滅できます。私はこの正確なコードを実装しましたが、まっすぐ進むようですが... – iBobb

関連する問題