xrecycleview下拉刷新上拉加载更多和BaseFragment

1.BaseFragment

package com.example.jingdong.ui.base;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.jingdong.R;
import com.example.jingdong.inter.IBase;

import javax.inject.Inject;

public abstract class BaseFragment<T extends BaseContract.BasePresenter> extends Fragment implements IBase,BaseContract.BaseView {

    @Inject
    protected T mPresenter;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        inject();
        if (mPresenter!=null){
            mPresenter.attachView(this);
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mPresenter.detachView();
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(getContentLayout(), container,false);
        initView(view);
        return view;
    }

    @Override
    public void showLoading() {

    }

    @Override
    public void dismissLoading() {

    }
}

2.xrecycleview适配器

package com.example.week1duanzi.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.week1duanzi.R;
import com.example.week1duanzi.bean.DuanziBean;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

public class DuanziAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context context;
    private List<DuanziBean.DataBean> list;
    private LayoutInflater inflater;

    public DuanziAdapter(Context context, List<DuanziBean.DataBean> list) {
        this.context = context;
        this.list = list;
        inflater = LayoutInflater.from(context);
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.xrv_layout, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
        DuanziBean.DataBean dataBean = list.get(position);
        MyViewHolder myViewHolder = (MyViewHolder) holder;
        String imgUrls = (String) dataBean.getImgUrls();
        String imgUrl = "";
        if (!TextUtils.isEmpty(imgUrls)) {
            imgUrl = imgUrls.split("\\|")[0];
        }
        myViewHolder.iv.setImageURI(imgUrl);
        myViewHolder.tvName.setText(dataBean.getUser().getNickname() + "");
        myViewHolder.tvTime.setText(dataBean.getCreateTime());
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    private class MyViewHolder extends RecyclerView.ViewHolder {

        private final SimpleDraweeView iv;
        private final TextView tvName;
        private final TextView tvTime;

        public MyViewHolder(View itemView) {
            super(itemView);
            iv = itemView.findViewById(R.id.img);
            tvName = itemView.findViewById(R.id.tv_name);
            tvTime = itemView.findViewById(R.id.tv_time);
        }
    }

    public void refresh(List<DuanziBean.DataBean> tempList) {
        //清楚原先集合里的内容
        this.list.clear();
        this.list.addAll(tempList);
        notifyDataSetChanged();
    }

    public void loadMore(List<DuanziBean.DataBean> tempList) {
        this.list.addAll(tempList);
        notifyDataSetChanged();
    }

    public int getListNum(){
        return this.list.size();
    }
}

3.fragment页面

package com.example.week1duanzi.ui.duanzi;

import android.support.v7.widget.LinearLayoutManager;
import android.view.View;

import com.example.app.MyApp;
import com.example.week1duanzi.R;
import com.example.week1duanzi.adapter.DuanziAdapter;
import com.example.week1duanzi.bean.DuanziBean;
import com.example.week1duanzi.bean.MyDataBean;
import com.example.week1duanzi.bean.MyDataBeanDao;
import com.example.week1duanzi.component.DaggerHttpComponent;
import com.example.week1duanzi.ui.base.BaseFragment;
import com.example.week1duanzi.ui.duanzi.contract.DuanziContract;
import com.example.week1duanzi.ui.duanzi.presenter.DuanziPresenter;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.ArrayList;
import java.util.List;

public class DuanziFragment extends BaseFragment<DuanziPresenter> implements DuanziContract.View {
    private XRecyclerView xlv;
    private List<DuanziBean.DataBean> list = new ArrayList<>();
    private DuanziAdapter adapter;
    private boolean isRefresh = true;
    private int page = 1;

    @Override
    public int getContentLayout() {
        return R.layout.fragment_duanzi;
    }

    @Override
    public void initView(View view) {
        xlv = view.findViewById(R.id.xrl);
        xlv.setLayoutManager(new LinearLayoutManager(getContext()));
        adapter = new DuanziAdapter(getContext(), list);
        xlv.setAdapter(adapter);
        //判断数据库中是否有数据
        MyDataBeanDao myDataBeanDao = MyApp.getDaoSession().getMyDataBeanDao();
        List<MyDataBean> list = myDataBeanDao.queryBuilder().build().list();
        if (list != null && list.size() > 0) {
            //说明数据库有数据
        } else {
            mPresenter.getDuanzi(page + "");
        }

        //设置刷新和加载更多监听
        xlv.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
                //刷新
                page = 1;
                isRefresh = true;
                mPresenter.getDuanzi(page + "");
            }

            @Override
            public void onLoadMore() {
                //加载更多
                page++;
                isRefresh = false;
                mPresenter.getDuanzi(page + "");

            }
        });

    }

    @Override
    public void inject() {
        DaggerHttpComponent.builder()
                .build()
                .inject(this);
    }

    @Override
    public void onSuccess(List<DuanziBean.DataBean> list) {
        if (isRefresh) {
            adapter.refresh(list);
            xlv.refreshComplete();
        } else {
            adapter.loadMore(list);
            int listNum = adapter.getListNum();
            xlv.loadMoreComplete();
            int size = list.size();
            int count = listNum + size;
            if (count >= 20) {
                xlv.setLoadingMoreEnabled(false);
            }
        }

    }
}

猜你喜欢

转载自blog.csdn.net/sui_yz/article/details/80329603