簡體   English   中英

禁用在SwipeRefreshLayout內單擊RecyclerView

[英]Disable click on RecyclerView inside a SwipeRefreshLayout

我使用RecyclerView實現了SwipeRefreshLayout ,我需要在OnRefreshListener期間禁用我的適配器項。

我嘗試了以下方法,但點擊正常發生:

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

使用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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM