依赖
//OkHttp compile 'com.squareup.okhttp3:okhttp:3.9.0' //Gson: compile 'com.google.code.gson:gson:2.8.2'权限
<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: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="bwie.com.wodedingdan.MainActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:textSize="25dp" android:text="订单列表"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/sandian" android:onClick="sandian" android:layout_alignParentRight="true"/> </RelativeLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/state_bian" android:layout_weight="1" android:id="@+id/btn_dzf" android:textColor="#f00" android:text="待支付"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/state_bian" android:layout_weight="1" android:id="@+id/btn_yzf" android:text="已支付"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/state_bian" android:layout_weight="1" android:id="@+id/btn_yqx" android:text="已取消"/> </LinearLayout> <FrameLayout android:id="@+id/framelayout" android:layout_width="match_parent" android:layout_height="match_parent"></FrameLayout> </LinearLayout>dzf_layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/dzf_listview"></ListView> </LinearLayout>dzf_listview_layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <!-- 订单名称 --> <TextView android:id="@+id/order_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="订单列表承德市标题" android:textSize="20dp" android:layout_weight="1"/> <!-- 订单状态 --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=""/> <TextView android:id="@+id/order_state" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:text="yiqyxia"/> </LinearLayout> <TextView android:id="@+id/order_price" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#f00" android:textSize="20dp" android:text="99.99"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/order_time" android:layout_width="wrap_content" android:layout_weight="1" android:layout_height="wrap_content" android:text="订单创建时间2018-01-13"/> <Button android:id="@+id/order_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="取消订单" /> </LinearLayout> </LinearLayout>popupwindow_layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" android:background="#444F47"> <TextView android:id="@+id/dzf" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="待支付" android:textColor="#fff" /> <TextView android:id="@+id/yzf" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="已支付" android:textColor="#fff" /> <TextView android:id="@+id/yqx" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="已取消" android:textColor="#fff" /> </LinearLayout>yqx_layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:id="@+id/yqx_listview" android:layout_width="match_parent" android:layout_height="match_parent"></ListView> </LinearLayout>yzf_layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:id="@+id/yzf_listview" android:layout_width="match_parent" android:layout_height="match_parent"></ListView> </LinearLayout>代码
MainActivity
package bwie.com.wodedingdan; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.app.AppCompatActivity; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.PopupWindow; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; import bwie.com.wodedingdan.fragment.DZFFragment; import bwie.com.wodedingdan.fragment.YQXFreament; import bwie.com.wodedingdan.fragment.YZFFreament; import bwie.com.wodedingdan.persenter.Persenter; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Persenter persenter; private TextView dzf; private TextView yzf; private TextView yqx; private int index = 0; private PopupWindow popupWindow; private Button btn_dzf; private Button btn_yqx; private Button btn_yzf; private List<Fragment> fragments; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_dzf = findViewById(R.id.btn_dzf); btn_yqx = findViewById(R.id.btn_yqx); btn_yzf = findViewById(R.id.btn_yzf); //fragment集合 fragments = new ArrayList<>(); fragments.add(new DZFFragment()); fragments.add(new YZFFreament()); fragments.add(new YQXFreament()); btn_dzf.setOnClickListener(this); btn_yqx.setOnClickListener(this); btn_yzf.setOnClickListener(this); persenter = new Persenter(); } /** * 点击三点图片时 * 弹出popupwindow框,实现矿中按钮的点击事件,获得一个状态值 * 使用状态值来获取对应的状态列表 */ public void sandian(View view) { View inflate = LayoutInflater.from(MainActivity.this).inflate(R.layout.popupwindow_layout, null); popupWindow = new PopupWindow(inflate, 200, ViewGroup.LayoutParams.WRAP_CONTENT); popupWindow.setOutsideTouchable(true); popupWindow.setBackgroundDrawable(new BitmapDrawable()); dzf = inflate.findViewById(R.id.dzf); yzf = inflate.findViewById(R.id.yzf); yqx = inflate.findViewById(R.id.yqx); dzf.setOnClickListener(this); yzf.setOnClickListener(this); yqx.setOnClickListener(this); popupWindow.showAtLocation(inflate, Gravity.NO_GRAVITY, 800, 200); } @Override public void onClick(View view) { switch (view.getId()) { //popupwindow点击事件 case R.id.dzf: String s = dzf.getText().toString(); index = 0; Toast.makeText(MainActivity.this, s + index, Toast.LENGTH_LONG).show(); popupWindow.dismiss(); btn_dzf.setTextColor(Color.RED); btn_yqx.setTextColor(Color.BLACK); btn_yzf.setTextColor(Color.BLACK); getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,fragments.get(index)).commit(); break; case R.id.yzf: String s1 = yzf.getText().toString(); index = 1; Toast.makeText(MainActivity.this, s1 + index, Toast.LENGTH_LONG).show(); popupWindow.dismiss(); btn_yzf.setTextColor(Color.RED); btn_dzf.setTextColor(Color.BLACK); btn_yqx.setTextColor(Color.BLACK); getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,fragments.get(index)).commit(); break; case R.id.yqx: String s2 = yqx.getText().toString(); index = 2; Toast.makeText(MainActivity.this, s2 + index, Toast.LENGTH_LONG).show(); popupWindow.dismiss(); btn_yqx.setTextColor(Color.RED); btn_dzf.setTextColor(Color.BLACK); btn_yzf.setTextColor(Color.BLACK); getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,fragments.get(index)).commit(); break; //按钮的点击事件 case R.id.btn_dzf: btn_dzf.setTextColor(Color.RED); btn_yqx.setTextColor(Color.BLACK); btn_yzf.setTextColor(Color.BLACK); index = 0; getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,fragments.get(index)).commit(); break; case R.id.btn_yzf: btn_yzf.setTextColor(Color.RED); btn_dzf.setTextColor(Color.BLACK); btn_yqx.setTextColor(Color.BLACK); index = 1; getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,fragments.get(index)).commit(); break; case R.id.btn_yqx: btn_yqx.setTextColor(Color.RED); btn_dzf.setTextColor(Color.BLACK); btn_yzf.setTextColor(Color.BLACK); index = 2; getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,fragments.get(index)).commit(); break; } } }DZFBean
package bwie.com.wodedingdan; import java.util.List; /** * Created by W on 2018/1/14. */ public class DZFBean { /** * msg : 请求成功 * code : 0 * data : [{"createtime":"2017-12-19T20:28:57","orderid":3584,"price":99.99,"status":0,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-20T10:35:23","orderid":3623,"price":99.99,"status":0,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-20T10:36:37","orderid":3627,"price":99.99,"status":0,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-20T10:36:40","orderid":3628,"price":99.99,"status":0,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-20T10:37:13","orderid":3630,"price":99.99,"status":0,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-20T10:48:18","orderid":3633,"price":99.99,"status":0,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-20T11:12:30","orderid":3643,"price":99.99,"status":0,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-20T11:27:58","orderid":3680,"price":99.99,"status":0,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-20T15:23:15","orderid":3968,"price":5998,"status":0,"title":"订单测试标题71","uid":71},{"createtime":"2017-12-20T17:47:38","orderid":4073,"price":99.99,"status":0,"title":"订单测试标题71","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-12-19T20:28:57 * orderid : 3584 * price : 99.99 * status : 0 * title : 订单测试标题71 * 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; } } }adapter(DZFadapter)
package bwie.com.wodedingdan.adapter; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import java.io.IOException; import java.util.List; import bwie.com.wodedingdan.DZFBean; import bwie.com.wodedingdan.R; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class DZFadapter extends BaseAdapter { Handler handler; List<DZFBean.DataBean> list; Context context; public DZFadapter(List<DZFBean.DataBean> list, Context context,Handler handler) { this.list = list; this.context = context; this.handler = handler; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(final int i, View view, ViewGroup viewGroup) { final ViewHolder vh; if(view == null){ vh = new ViewHolder(); view = View.inflate(context, R.layout.dzf_listview_layout,null); vh.ordername = view.findViewById(R.id.order_name); vh.orderstate = view.findViewById(R.id.order_state); vh.orderprice = view.findViewById(R.id.order_price); vh.ordertime = view.findViewById(R.id.order_time); vh.orderbtn = view.findViewById(R.id.order_btn); view.setTag(vh); }else{ vh = (ViewHolder) view.getTag(); } vh.ordername.setText(list.get(i).getTitle()); int status = list.get(i).getStatus(); if(status == 0){ vh.orderstate.setText("待支付"); }else if(status == 1){ vh.orderstate.setText("已支付"); }else if(status == 2){ vh.orderstate.setText("已取消"); } vh.orderprice.setText(list.get(i).getPrice()+""); vh.ordertime.setText(list.get(i).getCreatetime()); final int orderid = list.get(i).getOrderid(); if(status == 0){ vh.orderbtn.setText("取消订单"); vh.orderbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("确定取消订单吗"); builder.setNegativeButton("否",null); builder.setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int in) { Log.d("TAG",orderid+""); getOk("https://www.zhaoapi.cn/product/updateOrder?uid=71&orderId="+orderid+"&status=2",context); } }); builder.create(); builder.show(); } }); }else if(status == 1){ vh.orderbtn.setText("查看订单"); vh.orderbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(context,"1",Toast.LENGTH_LONG).show(); } }); }else if(status == 2){ vh.orderbtn.setText("查看订单"); vh.orderbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(context,"2",Toast.LENGTH_LONG).show(); } }); } return view; } private void getOk(String s, final Context context) { OkHttpClient ok = new OkHttpClient(); Request request = new Request.Builder() .url(s) .build(); ok.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ Message message = Message.obtain(); message.what = 0; handler.sendMessage(message); } } }); } class ViewHolder{ TextView ordername; TextView orderstate; TextView orderprice; TextView ordertime; Button orderbtn; } }fragment
DZFFragment
package bwie.com.wodedingdan.fragment; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ListView; import android.widget.Toast; import com.google.gson.Gson; import java.io.IOException; import java.util.List; import bwie.com.wodedingdan.DZFBean; import bwie.com.wodedingdan.R; import bwie.com.wodedingdan.adapter.DZFadapter; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class DZFFragment extends Fragment { private View view; private ListView lv; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.what == 0){ Button btn = (Button) msg.obj; dzFadapter.notifyDataSetChanged(); Toast.makeText(getActivity(),"已取消",Toast.LENGTH_LONG).show(); } } }; private DZFadapter dzFadapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.dzf_layout,container,false); lv = view.findViewById(R.id.dzf_listview); getOk(); return view; } private void getOk() { OkHttpClient ok = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zhaoapi.cn/product/getOrders?uid=71&status=0") .build(); ok.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ String json = response.body().string(); DZFBean dzfBean = new Gson().fromJson(json, DZFBean.class); final List<DZFBean.DataBean> data = dzfBean.getData(); getActivity().runOnUiThread(new Runnable() { @Override public void run() { dzFadapter = new DZFadapter(data,getActivity(),handler); lv.setAdapter(dzFadapter); } }); } } }); } }YQXFragment
package bwie.com.wodedingdan.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.google.gson.Gson; import java.io.IOException; import java.util.List; import bwie.com.wodedingdan.DZFBean; import bwie.com.wodedingdan.R; import bwie.com.wodedingdan.adapter.DZFadapter; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class YQXFreament extends Fragment { private View view; private ListView lv; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.yqx_layout,container,false); lv = view.findViewById(R.id.yqx_listview); getOk(); return view; } private void getOk() { OkHttpClient ok = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zhaoapi.cn/product/getOrders?uid=71&status=2") .build(); ok.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ String json = response.body().string(); DZFBean dzfBean = new Gson().fromJson(json, DZFBean.class); final List<DZFBean.DataBean> data = dzfBean.getData(); getActivity().runOnUiThread(new Runnable() { @Override public void run() { DZFadapter dzFadapter = new DZFadapter(data,getContext(),null); lv.setAdapter(dzFadapter); } }); } } }); } }YZFFragment
package bwie.com.wodedingdan.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.google.gson.Gson; import java.io.IOException; import java.util.List; import bwie.com.wodedingdan.DZFBean; import bwie.com.wodedingdan.R; import bwie.com.wodedingdan.adapter.DZFadapter; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class YZFFreament extends Fragment { private View view; private ListView lv; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.yzf_layout,container,false); lv = view.findViewById(R.id.yzf_listview); getOk(); return view; } private void getOk() { OkHttpClient ok = new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zhaoapi.cn/product/getOrders?uid=71&status=1") .build(); ok.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ String json = response.body().string(); DZFBean dzfBean = new Gson().fromJson(json, DZFBean.class); final List<DZFBean.DataBean> data = dzfBean.getData(); getActivity().runOnUiThread(new Runnable() { @Override public void run() { DZFadapter dzFadapter = new DZFadapter(data,getContext(),null); lv.setAdapter(dzFadapter); } }); } } }); } }model(Model)
package bwie.com.wodedingdan.model; public class Model { }persenter(Persenter)
package bwie.com.wodedingdan.persenter; public class Persenter { }utils(OKHttpUtils)
package bwie.com.wodedingdan.utils; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; public class OkHttpUtils { private static OkHttpClient okHttpClient = null; private OkHttpUtils() { } //使用单例模式懒汉式设计模式,安全 public static OkHttpClient getInstance() { if (okHttpClient == null) { synchronized (OkHttpUtils.class) { okHttpClient = new OkHttpClient.Builder() .writeTimeout(5000, TimeUnit.SECONDS) .readTimeout(5000, TimeUnit.SECONDS) .connectTimeout(5000, TimeUnit.SECONDS) .build(); } } return okHttpClient; } /** * get请求 * 参数1 url * 参数2 回调Callback */ public static void doGet(String oldUrl, Callback callback) { //地址是不是有问号,如果有问号的haul判断是不是最后一位,不是最后一位又要怎么处理 Map<String, String> map = new HashMap<>(); map.put("source", "android"); StringBuilder builder = new StringBuilder();//拼接好的新地址串存储到了stringbuider中 if (oldUrl.contains("?")) { if (oldUrl.indexOf("?") == oldUrl.length() - 1) { } else { builder.append("&"); } } else { builder.append("?"); } for (Map.Entry<String, String> entry : map.entrySet()) { builder.append(entry.getKey()) .append("?") .append(entry.getValue()) .append("&"); } if (builder.indexOf("&") != -1) { builder.deleteCharAt(builder.indexOf("&")); } String newUrl = builder.toString(); OkHttpClient okHttpClient = OkHttpUtils.getInstance(); Request request = new Request.Builder() .url(newUrl) .build(); Call call = okHttpClient.newCall(request); call.enqueue(callback); } /** * post请求 * 参数1 url * 参数2 Map<String, String> params post请求的时候给服务器传的数据 * add..("","") * add() */ public static void doPost(String oldUrl, Map<String, String> params, Callback callback) { OkHttpClient okHttpClient = OkHttpUtils.getInstance(); FormBody.Builder requestBody = new FormBody.Builder(); requestBody.add("source", "android"); for (String key : params.keySet()) { requestBody.add(key, params.get(key)); } Request request = new Request.Builder() .post(requestBody.build()) .url(oldUrl) .build(); Call call = okHttpClient.newCall(request); call.enqueue(callback); } }