从非活动类中调用.setRefreshingtrue

问题描述

我在MainActivity的RecylerView中有一个SwipeRefreshLayout,我想将wipeRefreshLayout.setRefreshing(true)添加到非活动类中,该类是onLoadingStateChanged开关语句中的recylerAdapter。

我在Firestore中添加了数据,并希望也加载它们。

我在MainActivity中的SwipeRefreshLayout:

    swipeRefreshLayout = findViewById(R.id.swiperefresh);

每当我调用.setrefreshing(true)时,RecylerViewAdapter都会刷新

swipeRefreshLayout.setonRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            mAdapter.refresh();
        }
    });

我的适配器类如下:

public class TalesAdapter extends FirestorePagingAdapter<TalesDetails,TalesAdapter.TalesViewHolder> {

    public TalesAdapter(@NonNull FirestorePagingOptions<TalesDetails> options) {
        super(options);
    }


    @Override
    protected void onBindViewHolder(@NonNull TalesViewHolder holder,int position,@NonNull TalesDetails model) {
        holder.bind(model);
  }


    @NonNull
    @Override
    public TalesViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.talesrecyclerview,parent,false);
        return new TalesViewHolder(view);
    }
 

    @Override
     protected void onLoadingStateChanged(@NonNull LoadingState state) {
        switch (state) {
            case LOADING_INITIAL:
                break;
                  case LOADING_MORE:
           ----->     swipeRefreshLayout.setRefreshing(true);
                  break;
                       case LOADED:
               ----->        swipeRefreshLayout.setRefreshing(false);
                       break;

            case FINISHED:
         ----->       swipeRefreshLayout.setRefreshing(false);
                break;

            case ERROR:
        ----->        swipeRefreshLayout.setRefreshing(false);
                break;
        }
  }

    public class TalesViewHolder extends RecyclerView.ViewHolder  {

        private TextView Title;
        private TextView Matter;
        private TextView Name;

        public TalesViewHolder(View itemView ) {
            super(itemView);
            Name = itemView.findViewById(R.id.tvName);
            Title = itemView.findViewById(R.id.tvTitle);
            Matter = itemView.findViewById(R.id.tvMatter);
        }
            public void bind(TalesDetails tales){
            Name.setText(tales.name);
            Title.setText(tales.title);
            Matter.setText(tales.matter);
       }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)