禁用单击 SwipeRefreshLayout 内的 RecyclerView [英] Disable click on RecyclerView inside a SwipeRefreshLayout

查看:28
本文介绍了禁用单击 SwipeRefreshLayout 内的 RecyclerView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 RecyclerView 实现了一个 SwipeRefreshLayout,并且我需要在 OnRefreshListener 期间禁用我的适配器项.

I implemented a SwipeRefreshLayout using a RecyclerView and I need that my adapter items are disabled during the OnRefreshListener.

我尝试了以下方法,但点击正常:

I tried the following approach, but the click occurs normally:

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

推荐答案

使用我们在 ListAdapter 中的逻辑.这将禁用适配器项目,而不是它们的父项.

Use logic we had with ListAdapter. This will disable adapter items, instead their parent.

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

这篇关于禁用单击 SwipeRefreshLayout 内的 RecyclerView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆