Android中的省,市,区,实现三级联动
来源:互联网 发布:交叉网络外部性 编辑:程序博客网 时间:2024/05/01 03:20
android中的省,市,区,实现三级联动
通常我们会在买票的时候用到查询市,或者旅游时用到地区的查询,都会涉及到。。。。。。
下面二话不说直接贴代码。
这里写代码片xml布局代码<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" tools:context=".MainActivity" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:id="@+id/tv_Province" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="省份" /> <TextView android:id="@+id/tv_City" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="城市" /> <TextView android:id="@+id/tv_Zone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="区域" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ListView android:id="@+id/lv_Province" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" /> <ListView android:id="@+id/lv_City" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" /> <ListView android:id="@+id/lv_Zone" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout></LinearLayout>
这里写代码片item布局代码<?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" > <TextView android:id="@+id/mtv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="城市" android:gravity="center" /></LinearLayout>
这里写代码片两个javaBean类其一Province类package com.example.cn.bgs.jsonsspdemo;import java.util.List;public class Province { private List<City> cityList; private String provinceName; public List<City> getCityList() { return cityList; } public void setCityList(List<City> cityList) { this.cityList = cityList; } public String getProvinceName() { return provinceName; } public void setProvinceName(String provinceName) { this.provinceName = provinceName; }}
这里写代码片其二City类package com.example.cn.bgs.jsonsspdemo;import java.util.List;public class City { private List<String> zoneList; private String cityName; public List<String> getZoneList() { return zoneList; } public void setZoneList(List<String> zoneList) { this.zoneList = zoneList; } public String getCityName() { return cityName; } public void setCityName(String cityName) { this.cityName = cityName; }}
这里写代码片MyAdapter代码package com.example.cn.bgs.jsonsspdemo;import java.util.List;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class MyAdapter<T> extends BaseAdapter { private Context context; private List<T> list; public MyAdapter(Context context, List<T> list) { this.context = context; this.list = list; } @Override public int getCount() { // TODO Auto-generated method stub if (list == null) { return 0; } return list.size(); } public void refresh(List<T> list) { this.list = list; notifyDataSetChanged(); } @Override public T getItem(int position) { // TODO Auto-generated method stub return list.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @SuppressWarnings("unchecked") @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); convertView = View.inflate(context, R.layout.item, null); holder.mtv = (TextView) convertView.findViewById(R.id.mtv); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } T t = list.get(position); if (t instanceof Province) { Province p = (Province) t; holder.mtv.setText(p.getProvinceName()); } if (t instanceof City) { City c = (City) t; holder.mtv.setText(c.getCityName()); } if (t instanceof String) { String zone = (String) t; holder.mtv.setText(zone); } return convertView; } class ViewHolder { TextView mtv; }}
这里写代码片MainActivity代码package com.example.cn.bgs.jsonsspdemo;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import android.os.Bundle;import android.app.Activity;import android.content.res.AssetManager;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.TextView;public class MainActivity extends Activity { private TextView tv_Province, tv_City, tv_Zone; private ListView lv_Province, lv_City, lv_Zone; private MyAdapter proadapter; private MyAdapter cityadapter; private MyAdapter zoneadapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); String s = getData(); List<Province> proList = getJson(s); proadapter = new MyAdapter<Province>(MainActivity.this, proList); lv_Province.setAdapter(proadapter); lv_Province.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub Province p = (Province) proadapter.getItem(position); tv_Province.setText(p.getProvinceName()); tv_City.setText("市"); tv_Zone.setText("区"); List<City> cList = p.getCityList(); if (cityadapter == null) { cityadapter = new MyAdapter<City>(MainActivity.this, cList); lv_City.setAdapter(cityadapter); } else { cityadapter.refresh(cList); } if (zoneadapter != null) { zoneadapter.refresh(null); } } }); lv_City.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { City c = (City) cityadapter.getItem(position); List<String> zoneList = c.getZoneList(); tv_City.setText(c.getCityName()); if (zoneadapter == null) { zoneadapter = new MyAdapter<String>(MainActivity.this, zoneList); lv_Zone.setAdapter(zoneadapter); } else { zoneadapter.refresh(zoneList); } } }); lv_Zone.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String string = (String) zoneadapter.getItem(position); tv_Zone.setText(string); } }); } private void initView() { tv_Province = (TextView) findViewById(R.id.tv_Province); tv_City = (TextView) findViewById(R.id.tv_City); tv_Zone = (TextView) findViewById(R.id.tv_Zone); lv_Province = (ListView) findViewById(R.id.lv_Province); lv_City = (ListView) findViewById(R.id.lv_City); lv_Zone = (ListView) findViewById(R.id.lv_Zone); } public String getData() { try { AssetManager asset = getResources().getAssets(); InputStream in = asset.open("ssq.txt"); InputStreamReader reader = new InputStreamReader(in); BufferedReader br = new BufferedReader(reader); StringBuffer buffer = new StringBuffer(); String line; while ((line = br.readLine()) != null) { buffer.append(line); } br.close(); return buffer.toString(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } public List<Province> getJson(String s) { try { List<Province> proList = new ArrayList<Province>(); JSONArray ja = new JSONArray(s); for (int i = 0; i < ja.length(); i++) { Province p = new Province(); JSONObject jb = ja.getJSONObject(i); String proName = jb.getString("name"); JSONArray jacity = jb.getJSONArray("city"); List<City> cityList = new ArrayList<City>(); for (int j = 0; j < jacity.length(); j++) { City c = new City(); JSONObject jbb = jacity.getJSONObject(j); String cityName = jbb.getString("name"); JSONArray jazone = jbb.getJSONArray("area"); List<String> zoneList = new ArrayList<String>(); for (int k = 0; k < jazone.length(); k++) { String zoneName = jazone.getString(k); zoneList.add(zoneName); } c.setZoneList(zoneList); c.setCityName(cityName); cityList.add(c); } p.setProvinceName(proName); p.setCityList(cityList); proList.add(p); } return proList; } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }}
这里写代码片assets文件夹ssq.txt文件
代码都写完了,下面看一下效果图:
好了,一切都结束了,谢谢。
阅读全文
1 0
- Android中的省,市,区,实现三级联动
- UIPickerView实现省 市 区三级联动
- thinkphp实现省,市,区三级联动
- 三级联动 省 市 区 三级联动可赋值
- 省 市 区 三级联动
- AjaxPro实现省、市、区三级无刷新联动
- 实现省、市、区三级联动的输入框
- android省市区三级联动实现
- knockout 省、市、区三级联动
- 如何实现淘宝地址中的三级联动
- Android--Spinner实现省市区三级联动
- Android 地址选择器,实现省市区三级联动
- Android实现省市区三级联动效果
- android 中spinner 实现三级联动
- Android 日期选择器,实现年月日三级联动
- Android省市区三级联动的实现
- Android 日期选择器,实现年月日三级联动
- Android 地址选择器,实现省市区三级联动
- Java知识点
- 根据POI解析Excel的工具类
- linux yum install sysstat sar
- Emoji表情符号兼容方案(适用ios,android,wp等平台)
- 【终极奥义·真】android-性能优化-第一章-布局优化
- Android中的省,市,区,实现三级联动
- oracle 隐含参数修改
- iOS开发 UIView常见属性
- Liferay中配置MySQL数据库
- Java笔记
- 三维重建面试3:如何形象地理解四元数
- 步步高告诉你如何获客增长:4种数字化驱动案例
- Android service解析与使用实例
- Webpack项目构建