當前位置:首頁 » 安卓系統 » 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 瀏覽:75
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:300
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:788
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:338
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:204
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:801
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:357
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:583