第四节总结
来源:互联网 发布: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(); } }
阅读全文
0 0
- 第四节总结
- CSDN第四节课总结
- Oracle第四节课总结
- OC第四节NSArray,NSMutableArray,NSNumber总结
- 信息安全第四节课总结
- 软件测试第四节课总结
- 第四天:总结
- 第四天总结0324
- 数据结构第四章总结
- 第四章总结
- 第四章总结1
- 第四章 internet 总结
- 第四天工作总结
- 第四次慕课总结
- JQuery第四天总结
- 【自考】第四次考后总结
- 第四专题总结
- 第四章总结
- Google大数据三宝之GFS
- JZOJ2017.08.11 C组
- 认了吧
- Callable及Future
- 只会喊666的咸鱼
- 第四节总结
- C++继承重名问题
- MAC版E信心跳包加密KEY的逆向
- 最长上升子序列问题(LIS)和最长公共子序列问题(LCS)
- STM32F4_RCC系统时钟配置及描述
- bzoj 2005 能量采集 莫比乌斯反演
- Google大数据三宝之MapReduce
- 读写锁:ReadWriteLock
- C51 定时器Timer使用,及产生1ms系统Tick