android地区三级联动选择
来源:互联网 发布:java分页怎么实现 编辑:程序博客网 时间:2024/05/02 04:16
地区三级联动选择一个Activity 2个Fragment, 在Activity中一次添加Fragment显示省级、市级、县级的列表。
Activity 根布局为FrameLayout,其中显示一个省级的RecyclerView的列表,在第一个省级列表RecyclerView的adapter中的点击加入市级的第一个Fragment在市级的第一个Fragment的RecylerView的adapter中点击加入县级第二个Fragment,县级第二个Fragment的RecyclerView显示县级数据,选择结果记录,AreaBean对象从第一个activity的省级adapter传到第一个fragment在到adapter市级,
再入第二个Fraggment的adapter 点击保存返回数据,然后结束当前的Fragment和Activity。
第一个省级activity:
public class SelectProvince extends AppCompatActivity { @BindView(R.id.province_list) RecyclerView province_select; private RecyclerView.LayoutManager manager; private Province_adapter adapter; private CityBean cityBean; //用handler获取子线程的数据 private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); cityBean = (CityBean) msg.obj; //获得数据 adapter = new Province_adapter(SelectProvince.this,cityBean.getData()); adapter.setAreaBean(new AreaBean()); province_select.setAdapter(adapter); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_select_area); ButterKnife.bind(this); manager = new LinearLayoutManager(this); province_select.setLayoutManager(manager); province_select.setHasFixedSize(true); GetJsonToObject(); } /* *解析JSon */ private void GetJsonToObject(){ new Thread(new Runnable() { @Override public void run() { System.out.println("sadafas"); Gson gson = new Gson(); //传出数据 Message message = Message.obtain(); message.obj = gson.fromJson(getJson("ChinaCites.json"),CityBean.class); handler.sendMessage(message); } }).start(); } /* *获得Json */ public String getJson(String fileName) { StringBuilder stringBuilder = new StringBuilder(); try { AssetManager assetManager = this.getAssets(); BufferedReader bf = new BufferedReader(new InputStreamReader( assetManager.open(fileName))); String line; while ((line = bf.readLine()) != null) { stringBuilder.append(line); } } catch (IOException e) { e.printStackTrace(); } return stringBuilder.toString(); }/* *返回和销毁fragment */ private void BackFragment(){ if (getSupportFragmentManager().getBackStackEntryCount() == 0){//必须先setResult setResult(0x123,null); finish(); }else { getSupportFragmentManager().popBackStack(); } }
}
布局:<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_select_area" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".SelectProvince"> <android.support.v7.widget.RecyclerView android:id="@+id/province_list" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView></FrameLayout>
市级Fragment:public class SelectCity extends Fragment { @BindView(R.id.city_list) RecyclerView city_select; private RecyclerView.LayoutManager manager; private City_adapter adapter; List<CityBean.Data.City> list; private AppCompatActivity compatActivity; private AreaBean areaBean; public void setAreaBean(AreaBean areaBean) { this.areaBean = areaBean; } public AreaBean getAreaBean() { return areaBean; } public SelectCity(AppCompatActivity activity, List<CityBean.Data.City> list) { this.list = list; this.compatActivity = activity; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootview = inflater.inflate(R.layout.fragment_select_city, container, false); ButterKnife.bind(this,rootview); manager = new LinearLayoutManager(rootview.getContext()); city_select.setLayoutManager(manager); city_select.setHasFixedSize(true); adapter = new City_adapter(compatActivity,list); //传递选择的省份 adapter.setAreaBean(getAreaBean()); city_select.setAdapter(adapter); return rootview; } @Override public void onDestroy() { super.onDestroy(); //System.out.println("city"); }}
布局:<FrameLayout 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:background="@color/SystemWhite"> <android.support.v7.widget.RecyclerView android:id="@+id/city_list" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView></FrameLayout>县级Fragment:
public class SelectCounty extends Fragment { @BindView(R.id.county_list) RecyclerView county_select; private RecyclerView.LayoutManager manager; private County_adapter adapter; private List<String> county; private AreaBean areaBean; public void setAreaBean(AreaBean areaBean) { this.areaBean = areaBean; } public AreaBean getAreaBean() { return areaBean; } private AppCompatActivity compatActivity; public SelectCounty(AppCompatActivity activity,List<String> county) { this.county = county; this.compatActivity = activity; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootview = inflater.inflate(R.layout.fragment_select_county, container, false); ButterKnife.bind(this,rootview); manager = new LinearLayoutManager(rootview.getContext()); county_select.setLayoutManager(manager); county_select.setHasFixedSize(true); adapter = new County_adapter(compatActivity,county); adapter.setAreaBean(getAreaBean()); county_select.setAdapter(adapter); return rootview; } @Override public void onDestroy() { super.onDestroy(); //System.out.println("conuty"); }}
布局:<FrameLayout 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:background="@color/SystemWhite"> <android.support.v7.widget.RecyclerView android:id="@+id/county_list" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView></FrameLayout>省级adapter:
public class Province_adapter extends RecyclerView.Adapter<Province_adapter.MyHolder> { private List<CityBean.Data> list; private AppCompatActivity compatActivity; private AreaBean areaBean; public void setAreaBean(AreaBean areaBean) { this.areaBean = areaBean; } public AreaBean getAreaBean() { return areaBean; } public Province_adapter(AppCompatActivity compatActivity, List<CityBean.Data> list){ this.list = list; this.compatActivity = compatActivity; } @Override public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { View rootview = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_area,null); MyHolder holder = new MyHolder(rootview); return holder; } @Override public void onBindViewHolder(MyHolder holder, final int position) { holder.area_text.setText(list.get(position).getName()); holder.area_text.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //跳到城市 getAreaBean().setmProvince(list.get(position).getName()); addFrament(compatActivity,list.get(position).getCity()); } }); } @Override public int getItemCount() { return list.size(); } public static class MyHolder extends RecyclerView.ViewHolder{ @BindView(R.id.area_text) TextView area_text; public MyHolder(View itemView) { super(itemView); ButterKnife.bind(this,itemView); } } private void addFrament(AppCompatActivity activity, List<CityBean.Data.City> list){ SelectCity selectCity = new SelectCity(activity,list); //传递结果 selectCity.setAreaBean(getAreaBean()); FragmentManager manager = activity.getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.add(R.id.activity_select_area, selectCity,list.toString()); transaction.addToBackStack(list.toString()); transaction.commit(); }}市级adapter:
public class City_adapter extends RecyclerView.Adapter<City_adapter.MyHolder> { private List<CityBean.Data.City> list; private AppCompatActivity compatActivity; private AreaBean areaBean; public void setAreaBean(AreaBean areaBean) { this.areaBean = areaBean; } public AreaBean getAreaBean() { return areaBean; } public City_adapter(AppCompatActivity compatActivity, List<CityBean.Data.City> list){ this.list = list; this.compatActivity = compatActivity; } @Override public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { View rootview = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_area,null); MyHolder holder = new MyHolder(rootview); return holder; } @Override public void onBindViewHolder(MyHolder holder, final int position) { holder.area_text.setText(list.get(position).getName()); holder.area_text.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //跳到县区 getAreaBean().setmCity(list.get(position).getName()); addFrament(compatActivity,list.get(position).getCounty()); } }); } @Override public int getItemCount() { return list.size(); } public static class MyHolder extends RecyclerView.ViewHolder{ @BindView(R.id.area_text) TextView area_text; public MyHolder(View itemView) { super(itemView); ButterKnife.bind(this,itemView); } } private void addFrament(AppCompatActivity activity, List<String> county){ SelectCounty selectCounty = new SelectCounty(activity,county); //传递城市 selectCounty.setAreaBean(getAreaBean()); FragmentManager manager = activity.getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.add(R.id.activity_select_area, selectCounty,list.toString()); transaction.addToBackStack(list.toString()); transaction.commit(); }}
县级dapter:public class County_adapter extends RecyclerView.Adapter<County_adapter.MyHolder> { private List<String> county; private AppCompatActivity compatActivity; private AreaBean areaBean; public void setAreaBean(AreaBean areaBean) { this.areaBean = areaBean; } public AreaBean getAreaBean() { return areaBean; } public County_adapter(AppCompatActivity compatActivity,List<String> county){ this.county = county; this.compatActivity = compatActivity; } @Override public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { View rootview = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_area,null); MyHolder holder = new MyHolder(rootview); return holder; } @Override public void onBindViewHolder(MyHolder holder, final int position) { holder.area_text.setText(county.get(position)); holder.area_text.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //获取选择地区的结果 //compatActivity.setResult(); getAreaBean().setmCounty(county.get(position)); //返回结果 Intent intent = new Intent(); intent.putExtra("arearesult",getAreaBean()); compatActivity.setResult(0x123,intent); //关闭当前activity compatActivity.finish(); } }); } @Override public int getItemCount() { return county.size(); } public static class MyHolder extends RecyclerView.ViewHolder{ @BindView(R.id.area_text) TextView area_text; public MyHolder(View itemView) { super(itemView); ButterKnife.bind(this,itemView); } }}
Areabean:public class AreaBean implements Serializable{ private String mProvince; private String mCity; private String mCounty; public String getmProvince() { return mProvince; } public void setmProvince(String mProvince) { this.mProvince = mProvince; } public String getmCity() { return mCity; } public void setmCity(String mCity) { this.mCity = mCity; } public String getmCounty() { return mCounty; } public void setmCounty(String mCounty) { this.mCounty = mCounty; }}Citybean:
public class CityBean { private String note; private List<Data> data; public String getNote() { return note; } public void setNote(String note) { this.note = note; } public List<Data> getData() { return data; } public void setData(List<Data> data) { this.data = data; } public static class Data { private String name; private List<City> city; public String getName() { return name; } public void setName(String name) { this.name = name; } public List<City> getCity() { return city; } public void setCity(List<City> city) { this.city = city; } public static class City { private String name; private List<String> county; public String getName() { return name; } public void setName(String name) { this.name = name; } public List<String> getCounty() { return county; } public void setCounty(List<String> county) { this.county = county; } } }}0 0
- android地区三级联动选择
- 三级联动选择地区!
- 地区选择JS 三级联动
- jquery地区选择三级联动
- 弹出提示选择日期,地区,三级联动
- WheelView地区选择三级联动详解
- Android省市区三级联动和地区定位
- 地区三级联动代码
- 地区三级联动
- yii 三级地区联动
- 地区三级联动
- 具有三级联动效果的地区选择 angulagerJS
- android 省市区选择三级联动
- android 城市选择三级联动
- android选择城市三级联动
- 中国地区三级联动表单
- 地区三级联动实现方式
- 地区的三级联动写法
- 回显带 forEach 循环的下拉框
- Oracle之物化视图
- SDAutoLayout的使用
- 简单下拉框选项回显
- 第94课:Hive性能调优之Mapper和Reducer设置、队列设置和并行执行、JVM重用和动态分区、Join调优等
- android地区三级联动选择
- 【设计模式】单例模式
- easyui datagird自定义编辑器textbox带按钮
- 【操作系统】连续分配存储管理方式
- 运行 openfire4.04 ServerStarter 报异常 AdminConsolePlugin:192 - An exception occurred while trying to mak
- Linux下的有用命令
- Vivado FIR core修改系数
- java-加密字符串
- DNS查询与BIND名字服务器的一些简单配置文件说明