购物车的订单查询

布局

activity_main
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.m.zhoukao3.views.MainActivity">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">


        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="订单列表"
            android:textSize="25sp"/>


        <ImageView
            android:id="@+id/image"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@mipmap/ic_launcher"/>
    </LinearLayout>


    <View
        android:layout_width="match_parent"
        android:layout_height="0.75dp"
        android:background="#000"/>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">


        <TextView
            android:id="@+id/dai"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="待支付"/>


        <TextView
            android:id="@+id/yizhifu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="已支付"/>


        <TextView
            android:id="@+id/yiquxiao"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="已取消"/>


    </LinearLayout>


    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:id="@+id/xRecylerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></com.jcodecraeer.xrecyclerview.XRecyclerView>


</LinearLayout>

item
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="8dp">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >


        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="标题"
            android:textSize="20sp"/>


        <TextView
            android:id="@+id/status"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="状态"
            android:textSize="20sp"/>
    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >


        <TextView
            android:id="@+id/price"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="jiage"
            android:textColor="#F00"
            android:textSize="20sp"/>


    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >


        <TextView
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="创建时间"
            android:textSize="20sp"/>


        <Button
            android:id="@+id/bt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="取消订单"/>
    </LinearLayout>
</LinearLayout>

pop_item
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#999999"
    android:orientation="vertical">


    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></ListView>


</LinearLayout>

V层

ActivityMain
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;


import com.example.m.zhoukao3.R;
import com.example.m.zhoukao3.models.DingBean;
import com.example.m.zhoukao3.models.ModeImpl;
import com.example.m.zhoukao3.presenter.PresenterImpl;
import com.jcodecraeer.xrecyclerview.ProgressStyle;
import com.jcodecraeer.xrecyclerview.XRecyclerView;


import java.util.List;


public class MainActivity extends AppCompatActivity implements IMainView,View.OnClickListener {


private XRecyclerView xRecyclerView;
private PresenterImpl presenter;
private ImageView imageView;
private String[] item = new String[]{"已支付","待支付","已取消"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化也没
initViews();
//调用
presenter = new PresenterImpl();
presenter.showDataToView(new ModeImpl(), this);
}


private void initViews() {
xRecyclerView = findViewById(R.id.xRecylerView);
//设置
xRecyclerView.setLayoutManager(new LinearLayoutManager(this));
xRecyclerView.addItemDecoration(new MyDecoration(this, MyDecoration.VERTICAL_LIST));
//设置
xRecyclerView.setPullRefreshEnabled(true);//下拉刷新
xRecyclerView.setLoadingMoreEnabled(true);//上拉加载
xRecyclerView.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);//样式
xRecyclerView.setLoadingMoreProgressStyle(ProgressStyle.Pacman);
//监听
xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
//调用presenter里面的刷新方法
presenter.showNewDataToView(new ModeImpl(), MainActivity.this);
}


@Override
public void onLoadMore() {
//调用presenter里面的加载更多方法
}
});
//pop
imageView = findViewById(R.id.image);
imageView.setOnClickListener(this);
}


//IMainView的展示所有数据的回调方法
@Override
public void showAllData(List<DingBean.DataBean> list) {
//设置适配器
MyAdapter myAdapter = new MyAdapter(MainActivity.this, list, this);
xRecyclerView.setAdapter(myAdapter);


}


private static final String TAG = "MainActivity";


//下拉刷新
@Override
public void showNewData(List<DingBean.DataBean> list) {
Log.d(TAG, "xiala--------" + list);
//设置适配器
MyAdapter myAdapter = new MyAdapter(MainActivity.this, list, this);
xRecyclerView.setAdapter(myAdapter);
//让进度条缩回去
xRecyclerView.refreshComplete();
}


//取消,需要调用两次网络请求
@Override
public void showQuXiaoData() {
Log.d(TAG, "取消成功-----");
Toast.makeText(MainActivity.this, "取消成功", Toast.LENGTH_SHORT).show();
presenter.showDataToView(new ModeImpl(), this);
}


//取消失败
@Override
public void showQuXiaoError() {
Toast.makeText(MainActivity.this, "取消失败", Toast.LENGTH_SHORT).show();
}
//点击事件
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.image:
View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.pop_item,null);
//设置view里面的数据
ListView listView = view.findViewById(R.id.listView);
listView.setAdapter(new BaseAdapter() {
@Override
public int getCount() {
return item.length;
}


@Override
public Object getItem(int position) {
return null;
}


@Override
public long getItemId(int position) {
return 0;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = new TextView(MainActivity.this);
textView.setText(item[position]);
textView.setTextSize(20);
return textView;
}
});
PopupWindow popupWindow = new PopupWindow(view, 200, ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setBackgroundDrawable(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
popupWindow.setOutsideTouchable(true);
popupWindow.showAsDropDown(imageView,0,10);
break;
}
}
}

IMainView
import com.example.m.zhoukao3.models.DingBean;


import java.util.List;


/**
 * Created by M on 2018/1/15.
 */


public interface IMainView {
//展示所有数据
void showAllData(List<DingBean.DataBean> list);
//刷新
void showNewData(List<DingBean.DataBean> list);
//取消后,重新显示数据
void showQuXiaoData();
//取消失败
void showQuXiaoError();
}

MyAdapter
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;


import com.example.m.zhoukao3.R;
import com.example.m.zhoukao3.models.DingBean;
import com.example.m.zhoukao3.models.ModeImpl;
import com.example.m.zhoukao3.presenter.PresenterImpl;


import java.util.List;


/**
 * Created by M on 2018/1/15.
 */


public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHoder> {


private final Context context;
private final List<DingBean.DataBean> list;
private final IMainView iMainView;


public MyAdapter(Context context, List<DingBean.DataBean> list,IMainView iMainView) {
this.iMainView = iMainView;
this.context = context;
this.list = list;
}


@Override
public MyViewHoder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item, parent,false);
MyViewHoder myViewHoder = new MyViewHoder(view);
return myViewHoder;
}


@Override
public void onBindViewHolder(MyViewHoder holder, final int position) {
//赋值
holder.title.setText(list.get(position).getTitle() + "");


holder.price.setText(list.get(position).getPrice() + "");
holder.time.setText(list.get(position).getCreatetime() + "");
String bt_text = "";
String tv_text = "";
if (list.get(position).getStatus() == 0) {
bt_text = "取消订单";
tv_text="待支付";
} else if (list.get(position).getStatus() == 1) {
bt_text = "查看订单";
tv_text="已取消";
} else {
bt_text = "查看订单";
tv_text="已支付";
}
holder.status.setText(tv_text);
holder.bt.setText(bt_text);
//实现状态改变
holder.bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//弹出AlertDailog
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("提示");
builder.setMessage("是否取消?");
AlertDialog alertDialog = builder.create();
builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//修改Bean的数据的状态
//请求接口,取消订单
PresenterImpl presenter = new PresenterImpl();
presenter.showQuXiaoDataToView(new ModeImpl(),list.get(position).getOrderid()+"",list.get(position).getStatus()+"",iMainView);


}
});
builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {


}
});
builder.show();


}
});
}


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


//ViewHodlder
class MyViewHoder extends RecyclerView.ViewHolder {




public final TextView title;
public final TextView status;
public final TextView price;
public final TextView time;
public final Button bt;


public MyViewHoder(View itemView) {
super(itemView);
title = itemView.findViewById(R.id.title);
status = itemView.findViewById(R.id.status);
price = itemView.findViewById(R.id.price);
time = itemView.findViewById(R.id.time);
bt = itemView.findViewById(R.id.bt);
}
}
}

MyDecoration
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;


/**
 * recyclerview的分割线
 */


public class MyDecoration extends RecyclerView.ItemDecoration {


private Context mContext;
private Drawable mDivider;
private int mOrientation;
public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;
public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;


//我们通过获取系统属性中的listDivider来添加,在系统中的AppTheme中设置
public static final int[] ATRRS = new int[]{
android.R.attr.listDivider
};


public MyDecoration(Context context, int orientation) {
this.mContext = context;
final TypedArray ta = context.obtainStyledAttributes(ATRRS);
this.mDivider = ta.getDrawable(0);
ta.recycle();
setOrientation(orientation);
}


//设置屏幕的方向
public void setOrientation(int orientation) {
if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) {
throw new IllegalArgumentException("invalid orientation");
}
mOrientation = orientation;
}


@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
if (mOrientation == HORIZONTAL_LIST) {
drawVerticalLine(c, parent, state);
} else {
drawHorizontalLine(c, parent, state);
}
}


//画横线, 这里的parent其实是显示在屏幕显示的这部分
public void drawHorizontalLine(Canvas c, RecyclerView parent, RecyclerView.State state) {
int left = parent.getPaddingLeft();
int right = parent.getWidth() - parent.getPaddingRight();
final int childCount = parent.getChildCount();
for (int i = 0; i < childCount; i++) {
final View child = parent.getChildAt(i);


//获得child的布局信息
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
final int top = child.getBottom() + params.bottomMargin;
final int bottom = top + mDivider.getIntrinsicHeight();
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
//Log.d("wnw", left + " " + top + " "+right+"   "+bottom+" "+i);
}
}


//画竖线
public void drawVerticalLine(Canvas c, RecyclerView parent, RecyclerView.State state) {
int top = parent.getPaddingTop();
int bottom = parent.getHeight() - parent.getPaddingBottom();
final int childCount = parent.getChildCount();
for (int i = 0; i < childCount; i++) {
final View child = parent.getChildAt(i);


//获得child的布局信息
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
final int left = child.getRight() + params.rightMargin;
final int right = left + mDivider.getIntrinsicWidth();
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
}


//由于Divider也有长宽高,每一个Item需要向下或者向右偏移
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if (mOrientation == HORIZONTAL_LIST) {
//画横线,就是往下偏移一个分割线的高度
outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
} else {
//画竖线,就是往右偏移一个分割线的宽度
outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
}
}
}

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;


/**
 * recyclerview的分割线
 */


public class MyDecoration extends RecyclerView.ItemDecoration {


private Context mContext;
private Drawable mDivider;
private int mOrientation;
public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;
public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;


//我们通过获取系统属性中的listDivider来添加,在系统中的AppTheme中设置
public static final int[] ATRRS = new int[]{
android.R.attr.listDivider
};


public MyDecoration(Context context, int orientation) {
this.mContext = context;
final TypedArray ta = context.obtainStyledAttributes(ATRRS);
this.mDivider = ta.getDrawable(0);
ta.recycle();
setOrientation(orientation);
}


//设置屏幕的方向
public void setOrientation(int orientation) {
if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) {
throw new IllegalArgumentException("invalid orientation");
}
mOrientation = orientation;
}


@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
if (mOrientation == HORIZONTAL_LIST) {
drawVerticalLine(c, parent, state);
} else {
drawHorizontalLine(c, parent, state);
}
}


//画横线, 这里的parent其实是显示在屏幕显示的这部分
public void drawHorizontalLine(Canvas c, RecyclerView parent, RecyclerView.State state) {
int left = parent.getPaddingLeft();
int right = parent.getWidth() - parent.getPaddingRight();
final int childCount = parent.getChildCount();
for (int i = 0; i < childCount; i++) {
final View child = parent.getChildAt(i);


//获得child的布局信息
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
final int top = child.getBottom() + params.bottomMargin;
final int bottom = top + mDivider.getIntrinsicHeight();
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
//Log.d("wnw", left + " " + top + " "+right+"   "+bottom+" "+i);
}
}


//画竖线
public void drawVerticalLine(Canvas c, RecyclerView parent, RecyclerView.State state) {
int top = parent.getPaddingTop();
int bottom = parent.getHeight() - parent.getPaddingBottom();
final int childCount = parent.getChildCount();
for (int i = 0; i < childCount; i++) {
final View child = parent.getChildAt(i);


//获得child的布局信息
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
final int left = child.getRight() + params.rightMargin;
final int right = left + mDivider.getIntrinsicWidth();
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
}


//由于Divider也有长宽高,每一个Item需要向下或者向右偏移
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if (mOrientation == HORIZONTAL_LIST) {
//画横线,就是往下偏移一个分割线的高度
outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
} else {
//画竖线,就是往右偏移一个分割线的宽度
outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
}
}
}

U层

HttpConfig
public class HttpConfig {
public static String ding_url = "https://www.zhaoapi.cn/product/getOrders";
public static String quxiao_url = "https://www.zhaoapi.cn/product/updateOrder";
}

OKHttpUtils
import android.os.Handler;
import android.os.Message;


import java.io.IOException;
import java.util.Map;
import java.util.Set;


import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;


/**
 * 子线程里面传出来东西.
 * handler
 */


public class OKHttpUtils {
//单利
private static OKHttpUtils okHttpUtils = null;
private OkLoadListener okLoadListener;//监听
private MyHandler myHandler = new MyHandler();


public static OKHttpUtils getInstance() {
if (okHttpUtils == null) {
okHttpUtils = new OKHttpUtils();
}
return okHttpUtils;
}


//get
public void okGet(String url) {
OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new MyIntercepter()).build();
Request request = new Request.Builder().url(url).build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//失败
Message message = myHandler.obtainMessage();
message.what = 0;
message.obj = e.getMessage();
myHandler.sendMessage(message);
}


@Override
public void onResponse(Call call, Response response) throws IOException {
//成功
Message message = myHandler.obtainMessage();
message.what = 1;
message.obj = response.body().string();
myHandler.sendMessage(message);
}
});
}


//post
public void okPost(String url, Map<String, String> params) {
OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new MyIntercepter()).build();
FormBody.Builder builder = new FormBody.Builder();
//遍历map
Set<String> keys = params.keySet();
for (String key : keys) {
String value = params.get(key);
builder.add(key, value);
}
FormBody body = builder.build();
Request request = new Request.Builder().url(url).post(body).build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
//失败
Message message = myHandler.obtainMessage();
message.what = 0;
message.obj = e.getMessage();
myHandler.sendMessage(message);
}


@Override
public void onResponse(Call call, Response response) throws IOException {
//成功
Message message = myHandler.obtainMessage();
message.what = 1;
message.obj = response.body().string();
myHandler.sendMessage(message);
}
});
}




//拦截器
class MyIntercepter implements Interceptor {


@Override
public Response intercept(Chain chain) throws IOException {
//获取请求
Request request = chain.request();
RequestBody body = request.body();
if (body instanceof FormBody) {
//创建新的FormBody
FormBody.Builder newBuilder = new FormBody.Builder();
//遍历
for (int i = 0; i < ((FormBody) body).size(); i++) {
String key = ((FormBody) body).name(i);
String value = ((FormBody) body).value(i);
newBuilder.add(key, value);
}
//添加公共参数
newBuilder.add("source", "android");
FormBody newBody = newBuilder.build();
Request newRequest = request.newBuilder().post(newBody).build();
Response response = chain.proceed(newRequest);
return response;
}
return null;
}
}


//提过外部调用接口的方法
public void setOkLoadListener(OkLoadListener okLoadListener) {
this.okLoadListener = okLoadListener;
}


//使用Handler
class MyHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
//失败
String error = (String) msg.obj;
okLoadListener.loadError(error);
break;
case 1:
//成功
String json = (String) msg.obj;
okLoadListener.loadSuccess(json);
break;
}
}
}
}

OkLoadListener
public interface OkLoadListener {
void loadSuccess(String json);
void loadError(String error);
}

P层

IPresenter
import com.example.m.zhoukao3.models.IModel;
import com.example.m.zhoukao3.views.IMainView;


/**
 * Created by M on 2018/1/15.
 */


public interface IPresenter {
//展示数据
//model去请求数据---okPost
//得到数据之后,给View
//view调用展示的方法---showAllData()
//p成里面一般会传入两个参数,1.model 2..view
void showDataToView(IModel iModel, IMainView iMainView);
//将刷新后的数据,展示到view
void showNewDataToView(IModel iModel, IMainView iMainView);
//取消
void showQuXiaoDataToView(IModel iModel,String orderId ,String  status,final IMainView iMainView);
}

PresenterImpl
public class PresenterImpl implements IPresenter {
private static final String TAG = "PresenterImpl";


//具体的实现
@Override
public void showDataToView(IModel iModel, final IMainView iMainView) {
//传入UID
Map<String, String> parames = new HashMap<String, String>();
parames.put("uid", "71");
iModel.getDataFromNet(HttpConfig.ding_url, parames, new ModelGetDataListener() {
@Override
public void getDataSuccess(String json) {
Log.d(TAG, "--------" + json);
//解析Json
Gson gson = new Gson();
DingBean dingBean = gson.fromJson(json, DingBean.class);
//传入view
iMainView.showAllData(dingBean.getData());
}


@Override
public void getDataError(String error) {
Log.d(TAG, "getDataError() returned: " + "失败");
}
});
}


//下拉刷新
@Override
public void showNewDataToView(IModel iModel, final IMainView iMainView) {
Map<String, String> parames = new HashMap<String, String>();
parames.put("uid", "71");
parames.put("page", "1");
iModel.doRefresh(HttpConfig.ding_url, parames, new ModelGetDataListener() {
@Override
public void getDataSuccess(String json) {
Log.d(TAG, "--------" + json);
//解析Json
Gson gson = new Gson();
DingBean dingBean = gson.fromJson(json, DingBean.class);
//传入view
iMainView.showNewData(dingBean.getData());
}


@Override
public void getDataError(String error) {
Log.d(TAG, "getDataError() returned: " + "失败");
}
});
}


//取消
@Override
public void showQuXiaoDataToView(IModel iModel, String orderId, String status, final IMainView iMainView) {
Map<String, String> parames = new HashMap<String, String>();
parames.put("uid", "71");
parames.put("orderId", orderId);
parames.put("status", status);
iModel.quXiao(HttpConfig.quxiao_url, parames, new ModelGetDataListener() {
//网络请求成功
@Override
public void getDataSuccess(String json) {
Log.d(TAG, "quxiao---- " + json);
//解析json的到code
try {
JSONObject jsonObject = new JSONObject(json);
String code = jsonObject.getString("code");
//取消成功
if (code.equals("0")) {
iMainView.showQuXiaoData();
} else {
//取消订单失败
iMainView.showQuXiaoError();
}
} catch (JSONException e) {
e.printStackTrace();
}
}


//网络请求失败
@Override
public void getDataError(String error) {


}
});
}
}


M层

IModel
public interface IModel {
//请求数据
void getDataFromNet(String ur, Map<String,String> params,ModelGetDataListener modelGetDataListener);
//刷新
void doRefresh(String ur, Map<String,String> params,ModelGetDataListener modelGetDataListener);
//上拉加载
void doLoadMore(String ur, Map<String,String> params,ModelGetDataListener modelGetDataListener);
//取消订单
void quXiao(String ur, Map<String,String> params,ModelGetDataListener modelGetDataListener);
}

DingBean
import java.util.List;


/**
 * Created by M on 2018/1/15.
 */


public class DingBean {


/**
* msg : 请求成功
* code : 0
* data : [{"createtime":"2017-10-19T20:28:43","orderid":20,"price":100,"status":2,"title":"订单标题测试3","uid":71},{"createtime":"2017-10-19T20:44:40","orderid":31,"price":11800,"status":2,"title":"订单标题测试14","uid":71},{"createtime":"2017-10-19T20:44:51","orderid":32,"price":11800,"status":2,"title":"订单标题测试15","uid":71},{"createtime":"2017-10-20T08:02:07","orderid":43,"price":11800,"status":2,"title":"订单标题测试","uid":71},{"createtime":"2017-10-20T08:02:16","orderid":44,"price":11800,"status":2,"title":"订单标题测试","uid":71},{"createtime":"2017-10-22T15:14:39","orderid":890,"price":11800,"status":2,"title":"","uid":71},{"createtime":"2017-11-09T09:17:20","orderid":1446,"price":99.99,"status":2,"title":"订单标题测试","uid":71},{"createtime":"2017-11-09T09:20:58","orderid":1447,"price":567,"status":2,"title":"订单标题测试","uid":71},{"createtime":"2017-11-09T09:20:58","orderid":1448,"price":256.99,"status":2,"title":"订单标题测试","uid":71},{"createtime":"2017-11-09T09:20:58","orderid":1449,"price":399,"status":2,"title":"订单标题测试","uid":71}]
* page : 1
*/


private String msg;
private String code;
private String page;
private List<DataBean> data;


public String getMsg() {
return msg;
}


public void setMsg(String msg) {
this.msg = msg;
}


public String getCode() {
return code;
}


public void setCode(String code) {
this.code = code;
}


public String getPage() {
return page;
}


public void setPage(String page) {
this.page = page;
}


public List<DataBean> getData() {
return data;
}


public void setData(List<DataBean> data) {
this.data = data;
}


public static class DataBean {
/**
* createtime : 2017-10-19T20:28:43
* orderid : 20
* price : 100
* status : 2
* title : 订单标题测试3
* uid : 71
*/


private String createtime;
private int orderid;
private double price;
private int status;
private String title;
private int uid;


public String getCreatetime() {
return createtime;
}


public void setCreatetime(String createtime) {
this.createtime = createtime;
}


public int getOrderid() {
return orderid;
}


public void setOrderid(int orderid) {
this.orderid = orderid;
}


public double getPrice() {
return price;
}


public void setPrice(double price) {
this.price = price;
}


public int getStatus() {
return status;
}


public void setStatus(int status) {
this.status = status;
}


public String getTitle() {
return title;
}


public void setTitle(String title) {
this.title = title;
}


public int getUid() {
return uid;
}


public void setUid(int uid) {
this.uid = uid;
}
}
}

ModeImpl
public class ModeImpl implements IModel {
@Override
public void getDataFromNet(String ur, Map<String,String> params,final ModelGetDataListener modelGetDataListener) {
//请求数据
OKHttpUtils ok = OKHttpUtils.getInstance();
ok.okPost(ur, params);
//监听就是等着结果
ok.setOkLoadListener(new OkLoadListener() {
@Override
public void loadSuccess(String json) {
modelGetDataListener.getDataSuccess(json);
}


@Override
public void loadError(String error) {
modelGetDataListener.getDataError(error);
}
});
}
//下拉刷新
@Override
public void doRefresh(String ur, Map<String, String> params, final ModelGetDataListener modelGetDataListener) {
OKHttpUtils ok = OKHttpUtils.getInstance();
ok.okPost(ur, params);
//监听就是等着结果
ok.setOkLoadListener(new OkLoadListener() {
@Override
public void loadSuccess(String json) {
modelGetDataListener.getDataSuccess(json);
}


@Override
public void loadError(String error) {
modelGetDataListener.getDataError(error);
}
});
}


@Override
public void doLoadMore(String ur, Map<String, String> params, ModelGetDataListener modelGetDataListener) {


}
//取消
@Override
public void quXiao(String ur, Map<String, String> params, final ModelGetDataListener modelGetDataListener) {
OKHttpUtils ok = OKHttpUtils.getInstance();
ok.okPost(ur, params);
//监听就是等着结果
ok.setOkLoadListener(new OkLoadListener() {
@Override
public void loadSuccess(String json) {
modelGetDataListener.getDataSuccess(json);
}


@Override
public void loadError(String error) {
modelGetDataListener.getDataError(error);
}
});
}
}

ModelGetDataListener
public interface ModelGetDataListener {
void getDataSuccess(String json);//获取数据陈赓
void getDataError(String error);//失败
}

依赖

compile 'com.squareup.okhttp3:okhttp:3.3.0'
    compile 'com.github.bumptech.glide:glide:3.6.1'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.jcodecraeer:xrecyclerview:1.5.8'

权限

 <uses-permission android:name="android.permission.INTERNET"/>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值