思路:
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' //《Rxjava2》 compile '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; //SmartRefreshLayout的App public class App extends Application{ //static 代码段可以防止内存泄露 static { //设置全局的Header构建器