第四节总结

来源:互联网 发布:hse风险矩阵标准 编辑:程序博客网 时间:2024/06/05 20:04

总结

这一节实现的是快递与电话归属地的查询,需要使用智能聚合的接口,返回JSON数据,解析数据。实现归属地查询时需要实现键盘逻辑,网络框架使用RXvolly。

快递查询的实现

布局如下
当点击查询按钮时,实现以下方法:
public void onClick(View v) {        switch (v.getId()){            case R.id.search_Bu:                if (!TextUtils.isEmpty(company_ET.getText())&!TextUtils.isEmpty(no_ET.getText())){                    com_name=company_ET.getText().toString();                    com_no=no_ET.getText().toString();
//创建url                    String url="http://v.juhe.cn/exp/index?key="+"3f2cdb21b5b3ee6a020041318072a116"+"&com="+com_name+"&no="+com_no;                    RxVolley.get(url, new HttpCallback() {                        @Override                        public void onSuccess(String t) {                            super.onSuccess(t);                            parsingJson(t);                        }                    });                }else {                    Toast.makeText(this,"请输入完整",Toast.LENGTH_LONG).show();                }                break;        }    }    //解析json    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(mlist,this);            mListView.setAdapter(adapter);        } catch (JSONException e) {            e.printStackTrace();        }    }}
实现适配器CourierAdapter(BaseAdapter):
public class CourierAdapter extends BaseAdapter {    private List<CourierData> mList;    private LayoutInflater inflater;    private CourierData data;    private Context mContext;    public CourierAdapter(List mList,Context mContext) {    this.mList=mList;        this.mContext=mContext;
//实例化inflater        inflater = LayoutInflater.from(mContext);    }    @Override    public int getCount() {        return mList.size();    }    @Override    public Object getItem(int position) {        return mList.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder viewHolder=null;      if (convertView==null){          convertView=inflater.inflate(R.layout.adapter_item,null);          viewHolder=new ViewHolder();          viewHolder.tv_remark= (TextView) convertView.findViewById(R.id.tv_remark);          viewHolder.tv_datetime= (TextView) convertView.findViewById(R.id.tv_datetime);          viewHolder.tv_zone= (TextView) convertView.findViewById(R.id.tv_zone);          convertView.setTag(viewHolder);      }else {       viewHolder = (ViewHolder) convertView.getTag();      }      data=mList.get(position);      viewHolder.tv_remark.setText(data.getRemark());        viewHolder.tv_datetime.setText(data.getDatetime());        viewHolder.tv_zone.setText(data.getZone());     return convertView;    }}class ViewHolder{    public TextView tv_datetime;    public TextView tv_remark;    public TextView tv_zone;}
时间轴样式实现:
<?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:gravity="center_vertical"    android:orientation="horizontal">    <LinearLayout        android:layout_width="60dp"        android:layout_height="wrap_content"        android:gravity="center_horizontal"        android:orientation="vertical">        <View            android:layout_width="2dp"            android:layout_height="30dp"            android:background="@color/colorPrimary" />        <ImageView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:src="@drawable/timeline_green" />        <View            android:layout_width="2dp"            android:layout_height="100dp"            android:background="@color/colorPrimary" />    </LinearLayout>    <LinearLayout        android:layout_width="0dp"        android:layout_height="wrap_content"        android:layout_marginRight="10dp"        android:layout_weight="1"        android:background="@drawable/timeline_content"        android:orientation="vertical"        android:padding="10dp">        <TextView            android:id="@+id/tv_remark"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="10dp"            android:text="你的快件已经到达北京"            android:textColor="@color/colorPrimary"            android:textSize="18sp"/>        <TextView            android:id="@+id/tv_zone"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginBottom="5dp"            android:layout_marginTop="5dp"            android:paddingLeft="10dp"            android:text="北京"            android:textColor="@color/colorAccent"            android:textSize="15sp"/>        <TextView            android:id="@+id/tv_datetime"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:paddingLeft="10dp"            android:text="2016-11-12"/>    </LinearLayout></LinearLayout>


归属地查询:

布局

键盘逻辑实现 :

点击数字与DEL实现逻辑
   public void onClick(View v) {        String str=phone_TV.getText().toString();        switch (v.getId()){            case R.id.button_0:            case R.id.button_1:            case R.id.button_2:            case R.id.button_3:            case R.id.button_4:            case R.id.button_5:            case R.id.button_6:            case R.id.button_7:            case R.id.button_8:            case R.id.button_9:
//当查询成功时再次输入时清空输入框,在查询成功时将tag设置为true                if(tag==true){                    str="";                    phone_TV.setText(str);                    tag=false;                }                phone_TV.setText(str+((Button)v).getText());                //移动光标                phone_TV.setSelection(str.length() + 1);                break;
//设置DEL的清楚最后一位功能            case R.id.button_DEL:                if (!TextUtils.isEmpty(str)&str.length()>0) {                    phone_TV.setText(str.substring(0, str.length() - 1));                    //移动光标                    phone_TV.setSelection(str.length() - 1);                }
设置DEL长按清空输入框方法:
button_DEL.setOnLongClickListener(new View.OnLongClickListener() {            @Override            public boolean onLongClick(View v) {                phone_TV.setText("");                return false;            }        });

设置“查询”按键的方法:
case  R.id.button_search:                    phonenum="http://apis.juhe.cn/mobile/get?phone="+str+"&key=7fbf0ce17daa9a2ca31626fa7c97407b";                    RxVolley.get(phonenum, new HttpCallback() {                        @Override                        public void onSuccess(String t) {                            super.onSuccess(t);                            parsingJson(t);                        }


 private void parsingJson(String t) {        try {            JSONObject jsonObject = new JSONObject(t);            JSONObject jsonResult=jsonObject.getJSONObject("result");            String province = jsonResult.getString("province");            String city = jsonResult.getString("city");            String areacode = jsonResult.getString("areacode");            String zip = jsonResult.getString("zip");            String company = jsonResult.getString("company");            String card = jsonResult.getString("card");            result_tv.setText("归属地:" + province + city + "\n"                    + "区号:" + areacode + "\n"                    + "邮编:" + zip + "\n"                    + "运营商:" + company + "\n"                    + "类型:" + card);            //图片显示            switch (company) {                case "移动":                    com_im.setBackgroundResource(R.drawable.china_mobile);                    break;                case "联通":                    com_im.setBackgroundResource(R.drawable.china_unicom);                    break;                case "电信":                    com_im.setBackgroundResource(R.drawable.china_telecom);                    break;            }            tag=true;        } catch (JSONException e) {            e.printStackTrace();        }    }






原创粉丝点击