Android --- 加载更多,刷新的逻辑----

惯例:先上图后说话,谢谢各位伙伴的支持! 有你们是我的福分!


每日一言:在我的平凡世界里,我就是不平凡。

                                                                                                                             逻辑图




/**
 * author: 贾旭飞(<a href="mailto:jiaxufei@danlu.com">jiaxufei@danlu.com</a>)<br>
 * version: 1.0.0<br>
 * since: 2017-09-07 00:06<br>
 * <p>
 * <p>
 * 订单列表
 * </p>
 */

public class NewOrderListActivity extends BaseActivity implements BaseQuickAdapter.RequestLoadMoreListener, SwipeRefreshLayout.OnRefreshListener {
    private NewOrderListPresenter newOrderListPresenter;
    private NewOrderListAdapter newOrderListAdapter;
    private RecyclerView rvOrderList;
    private SwipeRefreshLayout swipeLayout;
    private View notDataView;//空界面
    private View errorView;//错误界面
    ImageView btnBack;
    TextView tvTitle;
    private List<String> orderStateList;
    private String startTime = "";
    private String endTime = "";
    private int page = 1;
    private int mCurrentCounter = 0;//当前
    private int TOTAL_COUNTER = 0;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new_order_list);

        initView();
        initAdapter();
        initData();


    }


    /**
     * 初始化试图
     */
    private void initView() {
        swipeLayout = $(R.id.swipeLayout);
        rvOrderList = $(R.id.rv_order_list);
        swipeLayout.setOnRefreshListener(this);
        swipeLayout.setColorSchemeColors(Color.rgb(47, 223, 189));
        rvOrderList.setLayoutManager(new LinearLayoutManager(this));
        notDataView = getLayoutInflater().inflate(R.layout.loadpage_empty, (ViewGroup) rvOrderList.getParent(), false);
        errorView = getLayoutInflater().inflate(R.layout.error_view, (ViewGroup) rvOrderList.getParent(), false);
        btnBack = $(R.id.btn_back);
        tvTitle = $(R.id.tv_title);
        tvTitle.setText("我的订单");
        btnBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
    }

    /**
     * 初始化数据
     */
    private void initData() {
        orderStateList = new ArrayList<>();
        orderStateList.add(PaymentOrder.ORDER_STATUS_WAIT_FOR_PAY);//待付款
        orderStateList.add(PaymentOrder.ORDER_STATUS_WAIT_FOR_RECEIVE);//已发货
        orderStateList.add(PaymentOrder.ORDER_STATUS_WAIT_FOR_SEND);//待发货
        orderStateList.add(PaymentOrder.ORDER_STATUS_PAYING);//支付中
        newOrderListPresenter = new NewOrderListPresenter(this);
        newOrderListAdapter.setEmptyView(R.layout.loading_view, (ViewGroup) rvOrderList.getParent());
        startLoadData();
    }

    /**
     * 初始化适配器
     */
    private void initAdapter() {
        newOrderListAdapter = new NewOrderListAdapter();
        rvOrderList.setAdapter(newOrderListAdapter);
        newOrderListAdapter.setOnLoadMoreListener(this, rvOrderList);
        newOrderListAdapter.openLoadAnimation(BaseQuickAdapter.SLIDEIN_LEFT);
    }

    /**
     * 试图绑定数据
     *
     * @param orderList 订单列表
     * @param totalNum  总数
     */
    public void bindResponseToView(List<Order> orderList, int totalNum) {
        Log.e("1111111", "size=" + orderList.size());
        if (orderList.size() == 0) {
            newOrderListAdapter.setEmptyView(notDataView);
        } else {
            TOTAL_COUNTER = totalNum;
            mCurrentCounter = newOrderListAdapter.getData().size();
            if (page==1) {
                newOrderListAdapter.setNewData(orderList);
                swipeLayout.setRefreshing(false);
            } else {
                newOrderListAdapter.addData(orderList);
                newOrderListAdapter.loadMoreComplete();
            }
        }
    }

    @Override
    public void onRefresh() {
        newOrderListAdapter.setEnableLoadMore(false);
        page = 1;
        startLoadData();

    }

    @Override
    public void onLoadMoreRequested() {
        swipeLayout.setRefreshing(false);
        if (newOrderListAdapter.getData().size() < 20) {
            newOrderListAdapter.loadMoreEnd();
        } else {
            if (mCurrentCounter >= TOTAL_COUNTER) {
                newOrderListAdapter.loadMoreEnd();
            } else {
                page++;
                startLoadData();
            }
            rvOrderList.setEnabled(true);
        }

    }

    /**
     * 开始加载数据
     */
    private void startLoadData() {
        newOrderListPresenter.getPaymentOrderList(orderStateList, startTime, endTime, page);
    }
}

框架引入

先在 build.gradle(Project:XXXX) 的 repositories 添加:

    allprojects {
        repositories {
            ...
            maven { url "https://jitpack.io" }
        }
    }

然后在 build.gradle(Module:app) 的 dependencies 添加:

    dependencies {
            compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.22'
    }

在此感谢, BRVAH是一个强大的RecyclerAdapter框架。




  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄毛火烧雪下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值