订单信息
来源:互联网 发布:网络宣传要会什么 编辑:程序博客网 时间:2024/05/17 04:08
<uses-permission android:name="android.permission.INTERNET"/>
activity_main布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" ><LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_marginLeft="100dp" android:layout_gravity="center_horizontal" android:padding="15dp" android:gravity="center" android:textSize="23sp" android:text="订单列表" android:layout_width="0dp" android:layout_weight="2" android:layout_height="wrap_content" /> <ImageView android:layout_marginLeft="25dp" android:layout_gravity="center" android:id="@+id/image" android:src="@drawable/lv_icon" android:layout_width="0dp" android:layout_weight="1" android:layout_height="40dp" /></LinearLayout> <TextView android:background="#000000" android:layout_width="match_parent" android:layout_height="1dp" /> <RadioGroup android:id="@+id/group" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <RadioButton android:id="@+id/btn1" android:padding="15dp" android:gravity="center" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:button="@null" android:textSize="20sp" android:text="待支付" /> <RadioButton android:id="@+id/btn2" android:padding="15dp" android:gravity="center" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:button="@null" android:textSize="20sp" android:text="已支付" /> <RadioButton android:id="@+id/btn3" android:padding="15dp" android:gravity="center" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:button="@null" android:textSize="20sp" android:text="已取消" /> </RadioGroup> <TextView android:background="#000000" android:layout_width="match_parent" android:layout_height="1dp" /><com.liaoinstan.springview.widget.SpringView android:id="@+id/springView" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recyclerView" /></com.liaoinstan.springview.widget.SpringView></LinearLayout>
MainActivity主类
package com.example.menglucywhh.day1120_zhoukao3;import android.graphics.drawable.BitmapDrawable;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.PopupWindow;import android.widget.RadioGroup;import android.widget.TextView;import android.widget.Toast;import com.example.menglucywhh.day1120_zhoukao3.adapter.MyRecyAdapter;import com.example.menglucywhh.day1120_zhoukao3.bean.DingdanBean;import com.example.menglucywhh.day1120_zhoukao3.callback.MyViewCallBack;import com.example.menglucywhh.day1120_zhoukao3.callback.MyViewCallBack2;import com.example.menglucywhh.day1120_zhoukao3.presenter.MyPresenter;import com.liaoinstan.springview.container.DefaultFooter;import com.liaoinstan.springview.container.DefaultHeader;import com.liaoinstan.springview.widget.SpringView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements MyViewCallBack{ private RadioGroup radioGroup; private RecyclerView recyclerView; private List<DingdanBean.DataBean> listDingdan; private MyRecyAdapter myRecyAdapter; private ImageView imageView; private SpringView springView; int page=2; int status = 0; private MyPresenter myPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); springView = (SpringView) findViewById(R.id.springView); imageView = (ImageView) findViewById(R.id.image); imageView.setTag(1);//设置标记为1,,显示 radioGroup = (RadioGroup) findViewById(R.id.group); recyclerView = (RecyclerView) findViewById(R.id.recyclerView); //new出P层对象 myPresenter = new MyPresenter(this); //调用p层的方法 myPresenter.getDataFromModel(page); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false); recyclerView.setLayoutManager(linearLayoutManager); //springview的设置 springView.setHeader(new DefaultHeader(MainActivity.this)); springView.setFooter(new DefaultFooter(MainActivity.this)); springView.setListener(new SpringView.OnFreshListener() { @Override public void onRefresh() { page=1; myPresenter.getDataFromModel(page); springView.onFinishFreshAndLoad(); Toast.makeText(MainActivity.this,"下拉刷新成功",Toast.LENGTH_SHORT).show(); } @Override public void onLoadmore() { page++; myPresenter.getDataFromModel(page); springView.onFinishFreshAndLoad(); Toast.makeText(MainActivity.this,"上拉加载成功",Toast.LENGTH_SHORT).show(); } }); //引入popuowindow 的布局文件 View contentView = View.inflate(MainActivity.this,R.layout.popup_window,null); //父窗体 final View parent = View.inflate(MainActivity.this,R.layout.activity_main,null); //通过构造方法创建一个popupwindow final PopupWindow popupWindow = new PopupWindow(contentView, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); //出现的问题,需要设置4个下面的 popupWindow.setTouchable(true);//窗体可以触摸 popupWindow.setFocusable(true);//让窗体获取焦点 popupWindow.setOutsideTouchable(true);//设置窗体外部可以触摸 popupWindow.setBackgroundDrawable(new BitmapDrawable());//设置背景 //获取自定义的popupwindow里面的id,3个textview TextView daizhifu = (TextView) contentView.findViewById(R.id.daizhifu); TextView yizhifu = (TextView) contentView.findViewById(R.id.yizhifu); TextView yiquxiao = (TextView) contentView.findViewById(R.id.yiquxiao); daizhifu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popupWindow.dismiss();//弹窗取消 status=0; listDingdan.clear(); myPresenter.popUpQingqiu(status); Toast.makeText(MainActivity.this,status+"",Toast.LENGTH_SHORT).show(); } }); yizhifu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popupWindow.dismiss(); status=1; listDingdan.clear(); myPresenter.popUpQingqiu(status); Toast.makeText(MainActivity.this,status+"",Toast.LENGTH_SHORT).show(); } }); yiquxiao.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popupWindow.dismiss(); status=2; listDingdan.clear(); myPresenter.popUpQingqiu(status); Toast.makeText(MainActivity.this,status+"",Toast.LENGTH_SHORT).show(); } }); //点击右上角的图片 出来popupwindow imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //显示popupwindow popupWindow.showAsDropDown(imageView);//显示在控件的左下方 } }); } //实现接口重写的方法 @Override public void viewSuccess(DingdanBean dingdanBean) { // System.out.println(dingdanBean.getData().get(0).getTitle()); if(listDingdan==null){ listDingdan=new ArrayList<>(); } listDingdan.addAll(dingdanBean.getData()); //new适配器 if(myRecyAdapter==null) { myRecyAdapter = new MyRecyAdapter(MainActivity.this,listDingdan, new MyViewCallBack2() { @Override public void viewSuccess2(final String data) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this,data,Toast.LENGTH_SHORT).show(); } }); } @Override public void viewFail2() { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this,"网络慢",Toast.LENGTH_SHORT).show(); } }); } }); // myRecyAdapter.addData(listDingdan); recyclerView.setAdapter(myRecyAdapter); }else{ myRecyAdapter.notifyDataSetChanged(); } } @Override public void viewFail(Exception e) { System.out.println("异常 : "+e); } @Override protected void onDestroy() { super.onDestroy(); myPresenter.detach(); }}
封装类okhttp
OkhttpUtils类
package com.example.menglucywhh.day1120_zhoukao3.okhttp;import java.util.Map;import java.util.concurrent.TimeUnit;import okhttp3.FormBody;import okhttp3.OkHttpClient;import okhttp3.Request;/** * Created by Menglucywhh on 2017/11/20. */public class OkhttpUtils { private static OkhttpUtils okhttpUtils = null; private OkhttpUtils(){ } public static OkHttpClient client; public static OkhttpUtils getInstance(){ if(okhttpUtils==null){ okhttpUtils = new OkhttpUtils(); client = new OkHttpClient.Builder() .readTimeout(20, TimeUnit.SECONDS) .writeTimeout(20,TimeUnit.SECONDS) .connectTimeout(20,TimeUnit.SECONDS) .addInterceptor(new MyInterceptor()) .build(); } return okhttpUtils; } public void asy(Map<String,String> params,String url,AbstractUiCallBack callBack){ Request request = null; if(params!=null){ FormBody.Builder builder = new FormBody.Builder(); for(Map.Entry<String,String> entry : params.entrySet()){ builder.add(entry.getKey(),entry.getValue()); } FormBody body = builder.build(); request = new Request.Builder() .url(url) .post(body) .build(); }else{ request = new Request.Builder() .url(url) .build(); } client.newCall(request).enqueue(callBack); } public void asy1(Map<String,Integer> params,String url,AbstractUiCallBack callBack){ Request request = null; if(params!=null){ FormBody.Builder builder = new FormBody.Builder(); for(Map.Entry<String,Integer> entry : params.entrySet()){ builder.add(entry.getKey(),String.valueOf(entry.getValue())); } FormBody body = builder.build(); request = new Request.Builder() .url(url) .post(body) .build(); }else{ request = new Request.Builder() .url(url) .build(); } client.newCall(request).enqueue(callBack); }}
MyInterceptor
package com.example.menglucywhh.day1120_zhoukao3.okhttp;import java.io.IOException;import okhttp3.Interceptor;import okhttp3.Request;import okhttp3.Response;/** * Created by Menglucywhh on 2017/11/20. */public class MyInterceptor implements Interceptor{ @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); String url = request.url().toString()+"?source=android"; Request.Builder builder = request.newBuilder(); builder.get().url(url); Request request1 = builder.build(); Response response = chain.proceed(request1); return response; }}
AbstractUiCallBack类
package com.example.menglucywhh.day1120_zhoukao3.okhttp;import android.os.Handler;import android.os.Looper;import com.google.gson.Gson;import java.io.IOException;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import okhttp3.Call;import okhttp3.Callback;import okhttp3.Response;/** * Created by Menglucywhh on 2017/11/20. */public abstract class AbstractUiCallBack<T> implements Callback{ public abstract void success(T t); public abstract void fail(Exception e); private Handler handler = null; private Class clazz; public AbstractUiCallBack(){ handler = new Handler(Looper.getMainLooper()); Type type = getClass().getGenericSuperclass(); Type[] arr = ((ParameterizedType)type).getActualTypeArguments(); clazz = (Class) arr[0]; } @Override public void onFailure(Call call, IOException e) { fail(e); } @Override public void onResponse(Call call, Response response) throws IOException { try { String result = response.body().string(); Gson gson = new Gson(); final T t = (T) gson.fromJson(result,clazz); handler.post(new Runnable() { @Override public void run() { success(t);//成功的回调出去 } }); }catch (Exception e){ e.printStackTrace(); fail(e);//失败的回调 } }}
view层
MyViewCallBack
package com.example.menglucywhh.day1120_zhoukao3.callback;import com.example.menglucywhh.day1120_zhoukao3.bean.DingdanBean;/** * Created by Menglucywhh on 2017/11/20. */public interface MyViewCallBack { public void viewSuccess(DingdanBean dingdanBean); public void viewFail(Exception e);}
MyViewCallBack2
package com.example.menglucywhh.day1120_zhoukao3.callback;import com.example.menglucywhh.day1120_zhoukao3.bean.DingdanBean;/** * Created by Menglucywhh on 2017/11/20. */public interface MyViewCallBack2 { public void viewSuccess2(String data); public void viewFail2();}
model层
MyModel
package com.example.menglucywhh.day1120_zhoukao3.model;import com.example.menglucywhh.day1120_zhoukao3.bean.DingdanBean;import com.example.menglucywhh.day1120_zhoukao3.callback.MyViewCallBack;import com.example.menglucywhh.day1120_zhoukao3.okhttp.AbstractUiCallBack;import com.example.menglucywhh.day1120_zhoukao3.okhttp.OkhttpUtils;import java.io.IOException;import java.security.PublicKey;import java.util.HashMap;import java.util.Map;import okhttp3.Call;import okhttp3.Callback;import okhttp3.FormBody;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;/** * Created by Menglucywhh on 2017/11/20. */public class MyModel { //model层中请求数据 public void getData(int page,final ModelCallBack modelCallBack) { //调用封装好的okhttp类 Map<String,String> params = new HashMap<>(); params.put("uid","71"); String path="https://www.zhaoapi.cn/product/getOrders?uid=71&page="+page; OkhttpUtils.getInstance().asy(null,path, new AbstractUiCallBack<DingdanBean>() { @Override public void success(DingdanBean dingdanBean) { //成功返回数据 modelCallBack.success(dingdanBean); } @Override public void fail(Exception e) { modelCallBack.fail(e); } }); } //model层中请求数据,待支付 已支付 已取消 public void popUpGetData(int status,final ModelCallBack modelCallBack) { //调用封装好的okhttp类 String path="https://www.zhaoapi.cn/product/getOrders?uid=71&page=1&status="+status; OkhttpUtils.getInstance().asy(null,path, new AbstractUiCallBack<DingdanBean>() { @Override public void success(DingdanBean dingdanBean) { //成功返回数据 modelCallBack.success(dingdanBean); } @Override public void fail(Exception e) { modelCallBack.fail(e); } }); } //model层中请求数据 取消订单的接口 public void quXiao(final int orderid, final ModelCallBack1 modelCallBack1) { //调用封装好的okhttp类//String quXiaoPath1 = "https://www.zhaoapi.cn/product/updateOrder?uid=71&orderId=\"+listDa.get(position).getOrderid()+\"&status=2";String quXiaoPath = "https://www.zhaoapi.cn/product/updateOrder"; OkHttpClient client = new OkHttpClient(); FormBody body = new FormBody.Builder() .add("uid","71") .add("orderId",String.valueOf(orderid)) .add("status","2") .build(); Request request = new Request.Builder() .post(body) .url(quXiaoPath) .build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { modelCallBack1.fail(); } @Override public void onResponse(Call call, Response response) throws IOException { modelCallBack1.success(response.body().string()); } }); } //model层的接口 public interface ModelCallBack{ public void success(DingdanBean dingdanBean); public void fail(Exception e); } //model层的接口 public interface ModelCallBack1{ public void success(String body); public void fail(); }}
presenter
MyPresenter
package com.example.menglucywhh.day1120_zhoukao3.presenter;import com.example.menglucywhh.day1120_zhoukao3.MainActivity;import com.example.menglucywhh.day1120_zhoukao3.bean.DingdanBean;import com.example.menglucywhh.day1120_zhoukao3.callback.MyViewCallBack;import com.example.menglucywhh.day1120_zhoukao3.model.MyModel;/** * Created by Menglucywhh on 2017/11/20. */public class MyPresenter { MyModel myModel = new MyModel(); MyViewCallBack myViewCallBack; public MyPresenter(MyViewCallBack myViewCallBack) { this.myViewCallBack = myViewCallBack; } //调用model层去访问数据 public void getDataFromModel(int page){ myModel.getData(page,new MyModel.ModelCallBack() { @Override public void success(DingdanBean dingdanBean) { myViewCallBack.viewSuccess(dingdanBean); } @Override public void fail(Exception e) { myViewCallBack.viewFail(e); } }); } //调用model层去访问数据 public void popUpQingqiu(int status){ myModel.popUpGetData(status,new MyModel.ModelCallBack() { @Override public void success(DingdanBean dingdanBean) { myViewCallBack.viewSuccess(dingdanBean); } @Override public void fail(Exception e) { myViewCallBack.viewFail(e); } }); } //防止内存泄露 public void detach(){ this.myViewCallBack = null; }}
适配器
MyRecyAdapter
package com.example.menglucywhh.day1120_zhoukao3.adapter;import android.content.Context;import android.content.DialogInterface;import android.graphics.Color;import android.support.v7.app.AlertDialog;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.TextView;import com.example.menglucywhh.day1120_zhoukao3.MainActivity;import com.example.menglucywhh.day1120_zhoukao3.R;import com.example.menglucywhh.day1120_zhoukao3.bean.DingdanBean;import com.example.menglucywhh.day1120_zhoukao3.callback.MyViewCallBack2;import com.example.menglucywhh.day1120_zhoukao3.model.MyModel;import java.util.ArrayList;import java.util.List;/** * Created by Menglucywhh on 2017/11/20. */public class MyRecyAdapter extends RecyclerView.Adapter<MyRecyAdapter.MyViewHolder>{ MyModel myModel = new MyModel(); // private List<DingdanBean.DataBean> listDa ; Context context; MyViewCallBack2 myViewCallBack2; List<DingdanBean.DataBean> listDa; public MyRecyAdapter(Context context, List<DingdanBean.DataBean> listDa, MyViewCallBack2 myViewCallBack2) { this.myViewCallBack2 = myViewCallBack2; this.context = context; this.listDa = listDa; }//接受传来的数据 适配 /*public void addData(List<DingdanBean.DataBean> listDingdan) { if(listDa==null){ listDa = new ArrayList<>(); } listDa.addAll(listDingdan); notifyDataSetChanged(); }*/ @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context,R.layout.my_recy,null); MyViewHolder myViewHolder = new MyViewHolder(view); return myViewHolder; } @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { //设置显示 holder.price.setText("价格 : "+listDa.get(position).getPrice()+""); holder.time.setText("创建时间 : "+listDa.get(position).getCreatetime()); holder.title.setText(listDa.get(position).getTitle()); if(listDa.get(position).getStatus()==0) { holder.status.setText("待支付"); holder.status.setTextColor(Color.RED); }else if(listDa.get(position).getStatus()==1){ holder.status.setText("已支付"); holder.status.setTextColor(Color.BLACK); }else{ holder.status.setText("已取消"); holder.status.setTextColor(Color.BLACK); } if(listDa.get(position).getStatus()==0) { holder.quxiaoBtn.setText("取消订单"); }else if(listDa.get(position).getStatus()==1){ holder.quxiaoBtn.setText("查看订单"); }else{ holder.quxiaoBtn.setText("查看订单"); } holder.quxiaoBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(holder.quxiaoBtn.getText().toString().equals("取消订单")){ final AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("提示"); builder.setMessage("确定取消订单吗?"); builder.setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //改成已取消 holder.status.setText("已取消"); holder.status.setTextColor(Color.BLACK); holder.quxiaoBtn.setText("查看订单"); //取消的接口 String path="https://www.zhaoapi.cn/product/updateOrder?uid=71&orderId="+listDa.get(position).getOrderid()+"&status=2"; //调用model层的取消接口的方法 int orderid =listDa.get(position).getOrderid(); myModel.quXiao(orderid, new MyModel.ModelCallBack1() { @Override public void success(String body) { myViewCallBack2.viewSuccess2(body); } @Override public void fail() { myViewCallBack2.viewFail2(); } }); } }); builder.setNegativeButton("否", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); builder.show(); } } }); } @Override public int getItemCount() { return listDa==null?0:listDa.size(); } public static class MyViewHolder extends RecyclerView.ViewHolder { private final TextView title; private final TextView status; private final TextView price; private final TextView time; private final Button quxiaoBtn; public MyViewHolder(View itemView) { super(itemView); title = (TextView) itemView.findViewById(R.id.title); status = (TextView) itemView.findViewById(R.id.status); price = (TextView) itemView.findViewById(R.id.price); time = (TextView) itemView.findViewById(R.id.time); quxiaoBtn = (Button) itemView.findViewById(R.id.quxiao); } }}
popup_window布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FDCDEC"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:padding="10dp"> <TextView android:padding="10dp" android:id="@+id/daizhifu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="待支付" android:textSize="20sp" android:textStyle="bold" /> <TextView android:padding="10dp" android:id="@+id/yizhifu" android:textSize="20sp" android:textStyle="bold" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="已支付" /> <TextView android:padding="10dp" android:id="@+id/yiquxiao" android:textSize="20sp" android:textStyle="bold" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="已取消" /> </LinearLayout></RelativeLayout>
适配器布局my_recy
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <LinearLayout android:padding="10dp" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/title" android:textStyle="bold" android:textSize="23sp" android:text="订单测试标题" android:layout_width="0dp" android:layout_weight="3" android:layout_height="wrap_content" /> <TextView android:layout_marginLeft="200dp" android:id="@+id/status" android:textColor="#ff0000" android:textSize="20sp" android:text="待支付" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" /> </LinearLayout> <TextView android:textColor="#ff0000" android:padding="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/price" android:textStyle="bold" android:textSize="20sp" android:text="价格" /> <LinearLayout android:gravity="center_vertical" android:padding="10dp" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/time" android:textStyle="bold" android:textSize="20sp" android:text="创建时间" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" /> <Button android:layout_marginLeft="100dp" android:id="@+id/quxiao" android:textSize="20sp" android:text="取消订单" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <TextView android:layout_width="match_parent" android:layout_height="1dp" android:background="#000" /></LinearLayout>
阅读全文
0 0
- 订单信息
- 生产订单相关信息
- 销售订单开票信息
- ofbiz 订单信息
- 保存订单信息
- 获取订单跟踪信息
- 订单信息表单设计
- js漂浮订单信息
- OM销售-订单头信息
- 获取数据库中订单信息
- shell脚本:统计订单信息
- 上线订单泄露信息了
- 2017/10/22订单信息
- 购物网站15:订单action---订单分页列表----订单管理----订单信息查看
- 生产订单相关信息的获取
- 生产订单中的下层物料信息
- 获取生产订单的状态信息
- paypal 获取订单,获取交易信息 demo
- tensorflow r1.4 ubuntu14.04 C++ API调用 环境配置教程
- 树莓派蓝牙调试过程
- 【补充】完善jdbc 【学习笔记】
- 常用JS功能函数汇总
- leetcode-387. First Unique Character in a String
- 订单信息
- 171122之导入项目常见问题
- HDU--4221--Greedy?
- Java读书笔记——07 面向对象 继承
- 针对在webstorm开发React Native的代码快捷设置
- 拦截器——okhttp(post)+recyclerView显示数据
- codeforce 825E. Minimal Labels 拓扑排序 贪心思想
- 转:spring上下文,spring mvc上下文,以及servlet上下文的关联以及理解
- 互联网产品的运营指标