依赖
implementation 'com.google.guava:guava:16.0.1'
implementation 'com.google.code.gson:gson:2.2.4'
implementation 'com.squareup.picasso:picasso:2.3.2'
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
implementation 'com.github.userswlwork:pull-to-refresh:1.0.0'
implementation 'com.android.support:support-v13:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'cn.yipianfengye.android:zxing-library:2.2'
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'org.greenrobot:eventbus:3.0.0'
// 一般依赖:
implementation 'com.facebook.fresco:fresco:0.14.1'
implementation 'com.youth.banner:banner:1.4.9'
implementation 'com.github.bumptech.glide:glide:3.7.0'
// 如果需要支持gif,再添加:
implementation 'com.facebook.fresco:animated-gif:0.12.0'
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
implementation('com.jcodecraeer:xrecyclerview:1.5.9') {
exclude group: 'com.android.support'
}
implementation 'com.zhy:okhttputils:2.6.2'
implementation 'com.orhanobut:logger:2.1.1'
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
/*EventBus*/
implementation 'org.greenrobot:eventbus:3.0.0'
/*轮播图*/
implementation 'com.android.support:design:28.0.0'
implementation 'com.github.zrunker:ZViewPager:v1.0.4'
implementation 'com.yarolegovich:discrete-scrollview:1.4.9'
/*retrofit依赖 RxJava*/
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
implementation 'io.reactivex:rxandroid:1.2.1'
implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
//基于swipelayout的侧滑删除
implementation "com.daimajia.swipelayout:library:1.2.0@aar"
//fragment订单
public class OrdersFragment extends Fragment implements View.OnClickListener,OrdersView {
private ImageView img_dingdan_all;
private ImageView img_dingdan_pay;
private ImageView img_dingdan_shouhuo;
private ImageView img_dingdan_write;
private ImageView img_dingdan_finish;
private XRecyclerView orderForm_xRecyclerView;
private List<OrdersBean.OrderListBean> orderList;
private List<OrdersBean.OrderListBean> data;
private String sessionId;
private int userId;
private int page = 1;
private int num = 0;
private OrdersPresenter ordersPresenter;
private OrdersAdapter ordersAdapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_orders, container, false);
initData();
initView(view);
//刷新加载
orderForm_xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
handler.sendEmptyMessageDelayed(2,2000);
}
@Override
public void onLoadMore() {
page++;
ordersPresenter.getOrderFormData(userId,sessionId,0,page,5);
}
});
return view;
}
private void initData() {
//获取用户请求头
SharedPreferences loginId = getActivity().getSharedPreferences("loginId", MODE_PRIVATE);
userId = Integer.parseInt(loginId.getString("userId", ""));
sessionId = loginId.getString("sessionId", "");
//实例化Presenter
ordersPresenter = new OrdersPresenter(this);
ordersPresenter.getOrderFormData(userId,sessionId,0,page,5);
}
private void initView(View view) {
img_dingdan_all = (ImageView) view.findViewById(R.id.img_dingdan_all);
img_dingdan_pay = (ImageView) view.findViewById(R.id.img_dingdan_pay);
img_dingdan_shouhuo = (ImageView) view.findViewById(R.id.img_dingdan_shouhuo);
img_dingdan_write = (ImageView) view.findViewById(R.id.img_dingdan_write);
img_dingdan_finish = (ImageView) view.findViewById(R.id.img_dingdan_finish);
orderForm_xRecyclerView = (XRecyclerView) view.findViewById(R.id.orderForm_xRecyclerView);
img_dingdan_all.setOnClickListener(this);
img_dingdan_pay.setOnClickListener(this);
img_dingdan_shouhuo.setOnClickListener(this);
img_dingdan_write.setOnClickListener(this);
img_dingdan_finish.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.img_dingdan_all:
break;
case R.id.img_dingdan_pay:
break;
case R.id.img_dingdan_shouhuo:
break;
case R.id.img_dingdan_write:
break;
case R.id.img_dingdan_finish:
break;
}
}
@Override
public void onOrdersShow(OrdersBean ordersBean) {
num++;
if(num == 1){
orderList = ordersBean.getOrderList();
handler.sendEmptyMessage(1);
}else {
data = ordersBean.getOrderList();
orderList.addAll(data);
handler.sendEmptyMessage(3);
}
if(ordersBean.getOrderList().size() == 0){
Toast.makeText(getActivity(), "没有更多数据了", Toast.LENGTH_SHORT).show();
return;
}
}
@Override
public void onAddOrdersData(CommonBean commonBean) {
}
public void setAdapter(){
//设置布局管理器
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
orderForm_xRecyclerView.setLayoutManager(layoutManager);
//设置适配器
ordersAdapter = new OrdersAdapter(getActivity(), orderList);
orderForm_xRecyclerView.setAdapter(ordersAdapter);
ordersAdapter.setOnShopMessageListener(new OrdersAdapter.OnShopMessageListener() {
@Override
public void onShopMsg(View view, String msg) {
Toast.makeText(getActivity(), msg+"", Toast.LENGTH_SHORT).show();
}
});
}
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 1:
setAdapter();
break;
case 2:
page = 1;
//实例化Presenter
ordersPresenter = new OrdersPresenter(OrdersFragment.this);
ordersPresenter.getOrderFormData(userId,sessionId,0,page,5);
orderForm_xRecyclerView.refreshComplete();
break;
case 3:
ordersAdapter.notifyDataSetChanged();
orderForm_xRecyclerView.loadMoreComplete();
break;
}
}
};
@Override
public void onDestroy() {
super.onDestroy();
ordersPresenter.onDestroy();
if(ordersPresenter != null){
ordersPresenter = null;
}
}
}
MVP
M
public class OrdersModel {
//获取订单数据
public void getOrderFormData(int userId, String sessionId, int status, int page, int count, final OrdersCallBack ordersCallBack){
OrdersService ordersService = RectrofitUtil.getInstance().createApi(OrdersService.class);
Call<OrdersBean> call = ordersService.getOrderFormData(userId, sessionId, status, page, count);
call.enqueue(new Callback<OrdersBean>() {
@Override
public void onResponse(Call<OrdersBean> call, Response<OrdersBean> response) {
OrdersBean ordersBean = response.body();
ordersCallBack.onOrdersSuccess(ordersBean);
}
@Override
public void onFailure(Call<OrdersBean> call, Throwable t) {
}
});
}
//添加订单数据
public void addOrdersData(int userId, String sessionId, String data,double total,int addressId, final OrdersCallBack ordersCallBack){
OrdersService ordersService = OkRetrofitUtil.retrofit.create(OrdersService.class);
Call<CommonBean> call = ordersService.addOrdersData(userId, sessionId, data, total, addressId);
call.enqueue(new Callback<CommonBean>() {
@Override
public void onResponse(Call<CommonBean> call, Response<CommonBean> response) {
CommonBean commonBean = response.body();
ordersCallBack.onAddOrdersData(commonBean);
}
@Override
public void onFailure(Call<CommonBean> call, Throwable t) {
}
});
}
}
V
public interface OrdersView {
void onOrdersShow(OrdersBean ordersBean);
void onAddOrdersData(CommonBean commonBean);
}
P
public class OrdersPresenter {
private OrdersView ordersView;
private final OrdersModel ordersModel;
public OrdersPresenter(OrdersView ordersView) {
this.ordersView = ordersView;
ordersModel = new OrdersModel();
}
//获取订单数据
public void getOrderFormData(int userId,String sessionId,int status,int page,int count){
ordersModel.getOrderFormData(userId, sessionId, status, page, count, new OrdersCallBack() {
@Override
public void onOrdersSuccess(OrdersBean ordersBean) {
ordersView.onOrdersShow(ordersBean);
}
@Override
public void onAddOrdersData(CommonBean commonBean) {
}
});
}
//添加订单数据
public void addOrdersData(int userId,String sessionId,String data,double total,int addressId){
ordersModel.addOrdersData(userId, sessionId, data, total, addressId, new OrdersCallBack() {
@Override
public void onOrdersSuccess(OrdersBean ordersBean) {
}
@Override
public void onAddOrdersData(CommonBean commonBean) {
ordersView.onAddOrdersData(commonBean);
}
});
}
public void onDestroy() {
if(ordersView != null){
ordersView = null;
}
}
}
CALLBACK
public interface OrdersCallBack {
void onOrdersSuccess(OrdersBean ordersBean);
void onAddOrdersData(CommonBean commonBean);
}
SERVICE
public interface OrdersService {
@GET("order/verify/v1/findOrderListByStatus")
Call<OrdersBean> getOrderFormData(@Header("userId")int userId, @Header("sessionId")String sessionId
, @Query("status")int status, @Query("page")int page, @Query("count")int count);
@POST("order/verify/v1/createOrder")
Call<CommonBean> addOrdersData(@Header("userId")int userId, @Header("sessionId")String sessionId
,@Query("orderInfo")String data,@Query("totalPrice") double totalPrice
,@Query("addressId")int addressId);
}
Retrofit
public class RectrofitUtil {
private static RectrofitUtil instance;
private Retrofit mRetrofit;
private OkHttpClient okHttpClient = new OkHttpClient();
public static RectrofitUtil getInstance(){
if (instance==null){
instance = new RectrofitUtil();
}
return instance;
}
private RectrofitUtil(){
mRetrofit = new Retrofit.Builder()
.baseUrl("http://172.17.8.100/small/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.client(okHttpClient)
.build();
}
public <T> T createApi(Class<T> cls){
T t = mRetrofit.create(cls);
return t;
}
}