单号查询"/>
快递单号查询
1.用RxVolley网络请求技术,在APP的build.gradle中添加RxVolley依赖包
compile 'com.kymjs.rxvolley:rxvolley:1.1.0'
2.
package com.example.courier; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; import com.kymjs.rxvolley.RxVolley; import com.kymjs.rxvolley.client.HttpCallback; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.Collections; import java.util.List; import Adapter.CourierAdapter; import entity.CourierData; /** * Created by acer-pc on 2018/3/8. */ public class CourierActivity extends AppCompatActivity implements View.OnClickListener {private EditText et_name; private EditText et_number; private Button bt; private ListView mListView; private List<CourierData> mList = new ArrayList<>(); @Override protected void onCreate( Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity); initview(); }private void initview() {et_name = (EditText)findViewById(R.id.et_name); et_number = (EditText)findViewById(R.id.et_number); bt= (Button)findViewById(R.id.get_courier); mListView = (ListView) findViewById(R.id.mListView); bt.setOnClickListener(this); }@Override public void onClick(View v) {switch (v.getId()){case R.id.get_courier:/** * 1.获取当前输入框的内容 * 2.判断是否为空 * 3.拿到数据去请求数据 * 4.解析JSon * 5.ListView适配器 * 6.实体类(item) * 7.设置数据/显示效果 */ //1.获取当前输入框的内容 String name = et_name.getText().toString().trim(); String number = et_number.getText().toString().trim(); //申请聚合数据中快递单号KEY String KEY ="*******"; //拼接我们的URL String url = "="+KEY+"&com="+name+"&no="+number; //2.判断是否为空 if(!TextUtils.isEmpty(name)&!TextUtils.isEmpty(number)){//3.拿到数据去请求数据(JSON) RxVolley.get(url, new HttpCallback() {@Override public void onSuccess(String t) {super.onSuccess(t); Toast.makeText(CourierActivity.this,t,Toast.LENGTH_LONG).show(); //4.解析JSON parsingJson(t); }}); }else{Toast.makeText(this,"输入框不能为空",Toast.LENGTH_LONG).show(); }break; }}//解析数据 private void parsingJson(String t) {try {JSONObject jsonObject = new JSONObject(t); JSONObject jsonResult = jsonObject.getJSONObject("result"); JSONArray jsonArray = jsonResult.getJSONArray("list"); for(int i = 0;i<jsonArray.length();i++ ){JSONObject json = (JSONObject) jsonArray.get(i); CourierData data = new CourierData(); data.setRemark(json.getString("remark")); data.setZone(json.getString("zone")); data.setDatetime(json.getString("datetime")); mList.add(data); }//倒序处理 Collections.reverse(mList); CourierAdapter adapter = new CourierAdapter(this,mList); mListView.setAdapter(adapter); } catch (JSONException e) {e.printStackTrace(); }} }
3.实体类(即:从JSON中需要解析的属性)
package entity; /** * Created by acer-pc on 2018/3/8. */ public class CourierData {//时间 private String datetime; //状态 private String remark; //城市 private String zone; public String getDatetime() {return datetime; }public void setDatetime(String datetime) {this.datetime = datetime; }public String getRemark() {return remark; }public void setRemark(String remark) {this.remark = remark; }public String getZone() {return zone; }public void setZone(String zone) {this.zone = zone; }@Override public String toString() {return "CourierData{" +"datetime='" + datetime + '\'' +", remark='" + remark + '\'' +", zone='" + zone + '\'' +'}'; } }
4.数据:Adatper
package Adapter; /** * Created by acer-pc on 2018/3/8. */ import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.example.courier.R; import java.util.List; import entity.CourierData; /** * 标准套路 * 1.首先继承与BaseAdapter * 2.按住ALT+INS,把getCount,getItem,getItemId,getView方法导入 * 3.按住ALT+INS,把CourierAdapter构造方法导入 * 4.CourierAdapter()要传什么呢? * 4.1首先肯定是需要一个上下文(content), * 4.2上下文之后肯定需要数据啊,所以需要操作数据List<实体类> * 5.布局加载器加载item */ public class CourierAdapter extends BaseAdapter {private Context mContext; private List<CourierData> mList; //布局加载器 private LayoutInflater inflater; //声明一个data吧,声明一个实体类 private CourierData data; public CourierAdapter(Context mContext,List<CourierData> mList) {this.mContext = mContext; this.mList = mList; //布局加载器获取服务 inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); }@Override public int getCount() {//返回的肯定是数据源的长度 return mList.size(); }@Override public Object getItem(int position) {//你要哪个item,我就获取并返回哪个item return mList.get(position); }@Override public long getItemId(int position) {//有ID的item的话更方便了,直接返回position return position; }//重中之重 @Override public View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder = null; //用ViewHolder缓存 //第一次加载,需要各种各样的初始化 if(convertView == null){//new一个ViewHolder viewHolder = new ViewHolder(); //加载下item布局 convertView = inflater.inflate(R.layout.courier_item,null); viewHolder.tv_remark = (TextView) convertView.findViewById(R.id.tv_remark); viewHolder.tv_zone = (TextView)convertView.findViewById(R.id.tv_zone); viewHolder.tv_datetime =(TextView)convertView.findViewById(R.id.tv_datetime); //设置缓存 convertView.setTag(viewHolder); }else {//否则的话直接去缓存 viewHolder = (ViewHolder) convertView.getTag(); }//设置数据就好了 data = mList.get(position); viewHolder.tv_remark.setText(data.getRemark()); viewHolder.tv_zone.setText(data.getZone()); viewHolder.tv_datetime.setText(data.getDatetime()); return convertView; }class ViewHolder{private TextView tv_remark; private TextView tv_zone; private TextView tv_datetime; }}
更多推荐
快递单号查询
发布评论