实现订单列表页面

思路:

1. 实现如图1视图布局;

2. 实现订单列表功能;

3. 订单列表各元素绘制,严格按照如图所示效果设计;

4. 实现下拉刷新和上拉加载更多,分页功能

5. 列表视图用RecyclerView控件展示

接口:

uid=71

订单列表

https://www.zhaoapi.cn/product/getOrders

uid =71 & page=1

请求参数说明:

uid 用户id字段 String类型 必传

page  页码数  String类型 非必传(实现分页功能时,必传)

返回字段说明

status  订单状态 String类型

0:待支付

1:已支付

2:已取消

1.依赖

//Retrofit网络请求依赖》
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
compile 'com.squareup.retrofit2:converter-gson:2.4.0'
//Recyclerview的依赖》
compile 'com.android.support:recyclerview-v7:26.1.0'
//Butterknife依赖(黄油刀)compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
//Rxjava2compile 'io.reactivex.rxjava2:rxjava:2.1.7'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
//RXjava2的适配器》
compile 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
//SmartRefreshLayout依赖
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-5'
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-5'//没有使用特殊Header,可以不加这行

2.权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 
android:name=".app.App"
3.接口拼接

package com.example.dell.rikao0428.api;

import com.example.dell.rikao0428.bean.MyDataBean;
import io.reactivex.Flowable;
import retrofit2.http.GET;
import retrofit2.http.Query;

public interface ApiService {
    //Flowable:背压
    //拼接接口
    @GET("product/getOrders")
    Flowable<MyDataBean> getData(@Query("uid")String uid,@Query("page")String page);
}

4.接口拼接

package com.example.dell.rikao0428.utils;

//接口拼接
public class StringUrl {
    //接口路径
    public static final String BASE_URL="https://www.zhaoapi.cn/";
}

5.Retrofit网络请求封装

package com.example.dell.rikao0428.utils;

import com.example.dell.rikao0428.api.ApiService;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitUtils {
    //1创建一个单列模式
    private static volatile RetrofitUtils instance;
    private final Retrofit retrofit;

    //2创建一个私有的无参构造
    private RetrofitUtils(){

        //创建Retrofit
        retrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())//默认Gson进行解析
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())//使用RxJava2的适配器
                .baseUrl(StringUrl.BASE_URL)//接口
                .build();

    }
    //4.创建一个静态方法,得到instance 判断是否为空
    public static RetrofitUtils getInstance(){
        if(null==instance){
            synchronized (RetrofitUtils.class){
                if(instance==null){
                    instance = new RetrofitUtils();
                }
            }
        }
        //5返回创建的instance
        return instance;
    }
    //6创建方法 方便调用
    public ApiService getApiService(){
        return  retrofit.create(ApiService.class);
    }
}

6.SmartRefreshLayout的App

package com.example.dell.rikao0428.app;

import android.app.Application;
import android.content.Context;
import com.example.dell.rikao0428.R;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator;
import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator;
import com.scwang.smartrefresh.layout.api.RefreshFooter;
import com.scwang.smartrefresh.layout.api.RefreshHeader;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.scwang.smartrefresh.layout.header.ClassicsHeader;

//SmartRefreshLayoutApp
public class App extends Application{
    //static 代码段可以防止内存泄露
    static {
        //设置全局的Header构建器
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值