当前位置:首页 » 安卓系统 » android省市区联动

android省市区联动

发布时间: 2022-07-06 13:45:34

① android中spinner如何实现省市二级联动

Androidspinner实现省市二级联动,需要自定义adpter,将数据源绑定到adpter,当点击省时,触发自定义响应事件,改变市,示例如下:

java">{
privateTextViewtextView;
privateSpinnerprovince;
privateSpinnercity;
/**.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//String[]provinces=newString[]{"-省份-","河北省","山西省","北京"};
textView=(TextView)this.findViewById(R.id.textView);
province=(Spinner)this.findViewById(R.id.province);
city=(Spinner)this.findViewById(R.id.city);


//(处理省的显示)
//将可选内容与ArrayAdapter的连接(从资源数组文件中获取数据)
ArrayAdapter<CharSequence>adapter=
ArrayAdapter.createFromResource(this,R.array.province,android.R.layout.simple_spinner_item);
//newArrayAdapter<String>(this,android.R.layout.simple_spinner_item,provinces);
//设置下拉列表的风格
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

//将数据绑定到Spinner视图上
province.setAdapter(adapter);

//添加条目被选中监听器
province.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){

@Override
publicvoidonItemSelected(AdapterView<?>parent,Viewview,intposition,longid){
//parent既是province对象
Spinnerspinner=(Spinner)parent;
Stringpro=(String)spinner.getItemAtPosition(position);

//(处理省的市的显示)
//将默认值与ArrayAdapter连接(从资源数组文件中获取数据)
ArrayAdapter<CharSequence>cityAdapter=ArrayAdapter.createFromResource
(MainActivity.this,R.array.citydefault,android.R.layout.simple_spinner_item);
//newArrayAdapter<CharSequence>
//(MainActivity.this,android.R.layout.simple_spinner_item,cities);
//获取所在省含有哪些市(从资源数组文件中获取数据)
if(pro.equals("河北省")){

cityAdapter=ArrayAdapter.createFromResource
(MainActivity.this,R.array.hb,android.R.layout.simple_spinner_item);
}elseif(pro.equals("北京市")){

cityAdapter=ArrayAdapter.createFromResource
(MainActivity.this,R.array.bj,android.R.layout.simple_spinner_item);
}elseif(pro.equals("山西省")){

cityAdapter=ArrayAdapter.createFromResource
(MainActivity.this,R.array.shx,android.R.layout.simple_spinner_item);
}
//绑定数据到Spinner(City)上
city.setAdapter(cityAdapter);
}

@Override
publicvoidonNothingSelected(AdapterView<?>parent){

}

});
}
}

② Android Spinner实现省市二级联动效果

Spinner1,在setOnItemSelectedListener里查询数据,并将数据给

Spinner2,再弹出选择不就实现了吗

③ 关于android中spinner三级联动的问题

http://blog.csdn.net/jdsjlzx/article/details/41789835
这里的一些信息希望可译帮到你

④ android中省级联动一般用什么控件实现

Spinner上实现省市区三级联动,话不多说了

城市信息我将他放在strings.xml文件中,具体就不给出了,信息太大了

主xml文件部分代码如下:

[java] view plainprint?

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android=" "

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:focusableInTouchMode="false" >

<TableLayout

android:id="@+id/tableLayout1"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:paddingTop="20px"

android:stretchColumns="1" >

<TableRow

android:id="@+id/tableRow1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:paddingTop="10px"

android:="false" >

<TextView

android:id="@+id/province_text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="省份:"
>

</TextView>

<Spinner

android:id="@+id/province_spinner"

android:layout_width="wrap_content"

android:layout_height="wrap_content" >

</Spinner>

</TableRow>

<TableRow

android:id="@+id/tableRow2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:paddingTop="10px"

android:="false" >

<TextView

android:id="@+id/city_text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="城市:" >

</TextView>

<Spinner

android:id="@+id/city_spinner"

android:layout_width="wrap_content"

android:layout_height="wrap_content" >

</Spinner>

</TableRow>

<TableRow

android:id="@+id/tableRow3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:paddingTop="10px"

android:="false" >

<TextView

android:id="@+id/county_text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="县城镇:"
>

</TextView>

<Spinner

android:id="@+id/county_spinner"

android:layout_width="wrap_content"

android:layout_height="wrap_content" >

</Spinner>

</TableRow>

<EditText

android:id="@+id/display_edit"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:focusableInTouchMode="false"

android:hint="输出结果"

android:paddingTop="10px" >

</EditText>

</TableLayout>

</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android=" "
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:focusableInTouchMode="false" >

⑤ 省市区 地址联动 数据怎么创建

1、在做这个小项目前的准备工作:
1.1、分析:
由于省、市、县城(区)这些数据是存储到了Mysql数据库中的,我们要通过后台servlet获取数据库中的数据,然后再通过转发或者重定向的方式将数据呈现到前台页面中。
1.2、需要导入的jar包有:
mysql驱动包:mysql-connector-Java-5.1.7-bin.jar
c3p0数据库连接池:c3p0-0.9.2.1.jar、mysql-connector-java-5.1.7-bin.jar(c3p0依赖包)
前台c标签(需要通过遍历的方式呈现——c:forEach):jstl-1.0.2.jar、standard-1.0.1.jar(jstl依赖包)
将集合或者数组转换成json数据格式(Jackson包):jackson-annotations-2.2.1.jar、jackson-core-2.2.1.jar、jackson-databind-2.2.1.jar
前台页面需要用到jQuery,故还需要导入jquery-1.7.2.js库文件
1.3、该小项目用到的技术:
jdbc的知识、servlet的知识、jquery的知识、Ajax的知识(局部刷新)、标签的知识、EL表达式的知识、JSP的知识
2、开发过程:
2.1、准备数据源
创建一个数据库,命名为thereaction并创建三个表——province(省)、city(市)、county(县/区)
2.2后台开发
创建三个Javabean分别是Province、City、County。(由于太过简单,这里就不粘代码了)
创建Java类和c3p0连接池实现与数据库的连接:DAO.java(实现获取数据库数据的功能)、jdbctools.java(实现获取数据库连接、释放连接的功能)、c3p0-config.xml
jdbctools.java代码如下:
[java] view plain
package com.xiaojie.;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class Jdbctools {
private static DataSource ds=null;
//数据库连接池应只被初始化一次
static{
ds=new ComboPooledDataSource("helloc3p0");
}
//获取数据库连接
public static Connection getConnection() throws ClassNotFoundException, SQLException, IOException{
return ds.getConnection();
}
public static void shifanglianjie(Connection ct, PreparedStatement ps,ResultSet rs) {
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ct!=null){
try {
ct.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}

DAO.java的代码如下
[java] view plain
package com.xiaojie.;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.xiaojie.beans.City;
import com.xiaojie.beans.County;
import com.xiaojie.beans.Province;

public class DAO {
public List<Province> getprovince(String sql ,Object...args) throws ClassNotFoundException, SQLException, IOException{
List<Province> provinces=new ArrayList<Province>();
//准备去查数据库
Connection ct=null;
ct=Jdbctools.getConnection();
System.out.println("获取到数据库的连接了");
PreparedStatement ps=null;
ResultSet rs=null;
ps=ct.prepareStatement(sql);
for(int i=0;i<args.length;i++){
ps.setObject(i+1, args[i]);
}
rs=ps.executeQuery();
while(rs.next()){
provinces.add(new Province(rs.getInt("province_id"),rs.getString("province_name")));
}
Jdbctools.shifanglianjie(ct, ps, rs);
return provinces;

}
public List<City> getcity(String sql ,Object...args) throws SQLException, ClassNotFoundException, IOException{
List<City> cities=new ArrayList<City>();
//准备去查数据库
Jdbctools jt=new Jdbctools();
Connection ct=null;
ct=jt.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
ps=ct.prepareStatement(sql);
for(int i=0;i<args.length;i++){
ps.setObject(i+1, args[i]);
}
rs=ps.executeQuery();
while(rs.next()){
cities.add(new City(rs.getInt("city_id"),rs.getString("city_name")));
}
jt.shifanglianjie(ct, ps, rs);
return cities;

}
public List<County> getcounty(String sql,Object...args ) throws SQLException, ClassNotFoundException, IOException{
List<County> counties=new ArrayList<County>();
//准备去查数据库
Jdbctools jt=new Jdbctools();
Connection ct=null;
ct=jt.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
ps=ct.prepareStatement(sql);
for(int i=0;i<args.length;i++){
ps.setObject(i+1, args[i]);
}
rs=ps.executeQuery();
while(rs.next()){
counties.add(new County(rs.getInt("county_id"),rs.getString("county_name")));
}
jt.shifanglianjie(ct, ps, rs);
return counties;

}
}
c3p0-config.xml的代码如下:
[html] view plain
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<named-config name="helloc3p0">
<!-- 连接数据源的基本属性 -->
<property name="user">root</property>
<property name="password"></property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///thereaction</property>

<!-- 若数据库中连接数不足时,一次向数据库服务器申请多少个连接 -->
<property name="acquireIncrement">5</property>
<!-- 初始化数据库连接池时连接的数量 -->
<property name="initialPoolSize">5</property>
<!-- 数据库连接池中的最小的数据库连接数 -->
<property name="minPoolSize">5</property>
<!-- 数据库连接池中的最大的数据库连接数 -->
<property name="maxPoolSize">10</property>
<!-- c3p0数据库连接可以维护的statement的个数 -->
<property name="maxStatements">20</property>
<!-- 每个连接同时可以使用的statement对象的个数 -->
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>

创建servlet.java 文件
[java] view plain
package com.xiaojie.servlet;

import java.io.IOException;
import java.lang.reflect.Method;
import java.sql.SQLException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.xiaojie.beans.City;
import com.xiaojie.beans.County;
import com.xiaojie.beans.Province;
import com.xiaojie..DAO;
/**
* Servlet implementation class ThreeactiondServlet
*/
@WebServlet("/threeactiondServlet")
public class ThreeactiondServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String methodname=request.getParameter("method");
try {
Method method=getClass().getDeclaredMethod(methodname,HttpServletRequest.class,HttpServletResponse.class);
method.invoke(this, request,response);//调用各自的方法
} catch (Exception e) {
e.printStackTrace();
}
}
private DAO =new DAO();
protected void province(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException {
System.out.println("province的servlet进入了");
String sql="select province_id,province_name from province";
List<Province> provinces=.getprovince(sql);
request.setAttribute("provinces", provinces);
System.out.println(provinces);
//注意:这里不能用重定向的形式,因为我们好不容易在request请求域中存储了省的信息,目的是在前台页面中能够从请求域中获取到我们存在数据库中的值
//故这里只能用转发的方式
request.getRequestDispatcher("/index2.jsp").forward(request, response);
}
protected void city(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException {
System.out.println("city的servlet进入了");
String province_id=request.getParameter("province_id");
String sql="select city_id,city_name from city where province_id=?";
List<City> cities=.getcity(sql,Integer.parseInt(province_id));
ObjectMapper mapper=new ObjectMapper();
String result=mapper.writeValueAsString(cities);
System.out.println(result);
response.setContentType("text/javascript");
response.getWriter().print(result);
}
protected void county(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException {
System.out.println("county的servlet进入了");
String city_id=request.getParameter("city_id");
String sql="select county_id,county_name from county where city_id=?";
List<County> counties=.getcounty(sql,Integer.parseInt(city_id));
ObjectMapper mapper=new ObjectMapper();
String result=mapper.writeValueAsString(counties);
System.out.println(result);
response.setContentType("text/javascript");
response.getWriter().print(result);
}
}

⑥ 省市区三级联动如何解决代码初始化赋值不被覆盖的问题

省市区三级联动解决代码初始化赋值不被覆盖的问题,可能是因为是的事情,本机去的只是想你们的事。

⑦ 想做一个android 省市县三级联动,数据是从接口读取,怎么做

以前做过,数据是在本地xml里面取的: 上面是省市区的xml数据网盘地址。 如果要做成从服务器取,那么就一次性取下来,然后还是一样的流程。 如果你想选择省再去取对应的市,那么就要传省的id去获取对应的市,这时候就要有等待框,可能用户体验差一点。

⑧ 省市区,三级联动,修改的时候,怎样,获取相应的值

前端AJAX联动方式
前端可以传一个唯一值到后台,异步获取相对应的下级的数据。

⑨ Android对话框选择三级联动城市,求DEMO

<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="8dp">
<Spinner
android:id="@+id/spin_province"
android:layout_width="80dp"
android:layout_height="wrap_content"/>
<Spinner
android:id="@+id/spin_city"
android:layout_width="112dp"
android:layout_height="wrap_content"/>
<Spinner
android:id="@+id/spin_county"
android:layout_width="100dp"
android:layout_height="wrap_content"/>
</LinearLayout>


packagecom.example.android.demo.spinner;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.ArrayAdapter;
importandroid.widget.Spinner;


{
privateSpinnerprovinceSpinner=null;//省级(省、直辖市)
privateSpinnercitySpinner=null;//地级市
privateSpinnercountySpinner=null;//县级(区、县、县级市)
ArrayAdapter<String>provinceAdapter=null;//省级适配器
ArrayAdapter<String>cityAdapter=null;//地级适配器
ArrayAdapter<String>countyAdapter=null;//县级适配器
staticintprovincePosition=3;


//省级选项值
privateString[]province=newString[]{"北京","上海","天津","广东"};//,"重庆","黑龙江","江苏","山东","浙江","香港","澳门"};
//地级选项值
privateString[][]city=newString[][]
{
{"东城区","西城区","崇文区","宣武区","朝阳区","海淀区","丰台区","石景山区","门头沟区",
"房山区","通州区","顺义区","大兴区","昌平区","平谷区","怀柔区","密云县",
"延庆县"},
{"长宁区","静安区","普陀区","闸北区","虹口区"},
{"和平区","河东区","河西区","南开区","河北区","红桥区","塘沽区","汉沽区","大港区",
"东丽区"},
{"广州","深圳","韶关"//,"珠海","汕头","佛山","湛江","肇庆","江门","茂名","惠州","梅州",
//"汕尾","河源","阳江","清远","东莞","中山","潮州","揭阳","云浮"
}
};

//县级选项值
privateString[][][]county=newString[][][]
{
{//北京
{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},
{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"}
},
{//上海
{"无"},{"无"},{"无"},{"无"},{"无"}
},
{//天津
{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"},{"无"}
},
{//广东
{"海珠区","荔湾区","越秀区","白云区","萝岗区","天河区","黄埔区","花都区","从化市","增城市","番禺区","南沙区"},//广州
{"宝安区","福田区","龙岗区","罗湖区","南山区","盐田区"},//深圳
{"武江区","浈江区","曲江区","乐昌市","南雄市","始兴县","仁化县","翁源县","新丰县","乳源县"}//韶关
}
};


@Override
protectedvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

setSpinner();
}

/*
*设置下拉框
*/
privatevoidsetSpinner()
{
provinceSpinner=(Spinner)findViewById(R.id.spin_province);
citySpinner=(Spinner)findViewById(R.id.spin_city);
countySpinner=(Spinner)findViewById(R.id.spin_county);

//绑定适配器和值
provinceAdapter=newArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item,province);
provinceSpinner.setAdapter(provinceAdapter);
provinceSpinner.setSelection(3,true);//设置默认选中项,此处为默认选中第4个值

cityAdapter=newArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item,city[3]);
citySpinner.setAdapter(cityAdapter);
citySpinner.setSelection(0,true);//默认选中第0个

countyAdapter=newArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item,county[3][0]);
countySpinner.setAdapter(countyAdapter);
countySpinner.setSelection(0,true);


//省级下拉框监听
provinceSpinner.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener()
{
//表示选项被改变的时候触发此方法,主要实现办法:动态改变地级适配器的绑定值
@Override
publicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,intposition,longarg3)
{
//position为当前省级选中的值的序号

//将地级适配器的值改变为city[position]中的值
cityAdapter=newArrayAdapter<String>(
MainActivity.this,android.R.layout.simple_spinner_item,city[position]);
//设置二级下拉列表的选项内容适配器
citySpinner.setAdapter(cityAdapter);
provincePosition=position;//记录当前省级序号,留给下面修改县级适配器时用
}
@Override
publicvoidonNothingSelected(AdapterView<?>arg0)
{

}

});


//地级下拉监听
citySpinner.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener()
{
@Override
publicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,
intposition,longarg3)
{
countyAdapter=newArrayAdapter<String>(MainActivity.this,
android.R.layout.simple_spinner_item,county[provincePosition][position]);
countySpinner.setAdapter(countyAdapter);
}
@Override
publicvoidonNothingSelected(AdapterView<?>arg0)
{

}
});
}
}


要获取下拉框spinner中选中的值,用下面这方法就OK了
provinceSpinner.getSelectedItem().toString();
citySpinner.getSelectedItem().toString();
countySpinner.getSelectedItem().toString();

⑩ 如何实现android 三个ListView实现类似省市区的联动效果

如何在Android设备旋转时暂存数据以保护当前的交互状态 总结了以下几种情况:
设备旋转时保存Activity的交互状态: onSaveInstanceState();
设备旋转时保存Fragment的交互状态: setRetainInstance(true);
设备旋转时保存WebView的数据: android:configChanges="keyboardHidden|orientation|screenSize";
设备旋转时保存在自定义View中绘制的图形。
如果Fragment不包含WebView,只是简单的UI View,像是TextView, Button, CheckBox, ImageView... 不建议使用setRetainInstance方法,只需要记住当前fragment的index,然后在设备旋转后根据数据重新实例化一个fragment。因为不包含大量数据,旋转的过程中几乎可以用“无缝切换”来形容。
如果包含WebView还是采用针对WebView的方法(题主的情况)。所以要看情况而定。

热点内容
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:628
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:357
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:74
php微信接口教程 发布:2025-04-16 17:07:30 浏览:298
android实现阴影 发布:2025-04-16 16:50:08 浏览:788
粉笔直播课缓存 发布:2025-04-16 16:31:21 浏览:338
机顶盒都有什么配置 发布:2025-04-16 16:24:37 浏览:203
编写手游反编译都需要学习什么 发布:2025-04-16 16:19:36 浏览:801
proteus编译文件位置 发布:2025-04-16 16:18:44 浏览:357
土压缩的本质 发布:2025-04-16 16:13:21 浏览:583