android省市聯動
⑴ 想做一個android 省市縣三級聯動,數據是從介面讀取,怎麼做
以前做過,數據是在本地xml裡面取的: 上面是省市區的xml數據網盤地址。 如果要做成從伺服器取,那麼就一次性取下來,然後還是一樣的流程。 如果你想選擇省再去取對應的市,那麼就要傳省的id去獲取對應的市,這時候就要有等待框,可能用戶體驗差一點。
⑵ 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" >
⑶ Android 怎麼動態的設置Spinner聯動
重寫一下Adapter,然後自己對Adapter每個Item布局,在布局裡面設置一下點擊效果就行了。如:
public class MainActivity extends Activity {
private Spinner mSpinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView(){
mSpinner = (Spinner)findViewById(R.id.spinner);
MyAdapter adapter = new MyAdapter(getResources().getStringArray(R.array.girl_names));
mSpinner.setAdapter(adapter);
}
private class MyAdapter extends BaseAdapter{
private String[] idInt ;
public MyAdapter(String[] idInt){
this.idInt = idInt;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return idInt.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return idInt[arg0];
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
if(arg1 == null){
arg1 = getLayoutInflater().inflate(R.layout.spinner_item, null);
}
TextView text = (TextView)arg1.findViewById(R.id.spinner_item_id);
text.setText(idInt[arg0]);
return arg1;
}
}
spinner_item.xml
<?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:background="@drawable/text_selector"
android:orientation="vertical" >
<TextView
android:layout_margin="10dip"
android:id="@+id/spinner_item_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textIsSelectable="true" >
</TextView>
</LinearLayout>
然後:text_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:drawable="@android:color/black"></item>
<item android:state_pressed="false" android:drawable="@android:color/transparent"></item>
</selector>
⑷ android 怎樣用scrollowview嵌套gridview來實現多級聯動
GridView(網格視圖)是按照行列的方式來顯示內容的,一般用於顯示圖片,圖片等內容,比如實現九宮格圖,用GridView是首選,也是最簡單的。主要用於設置Adapter。
1.GridView常用的XML屬性
屬性名稱 描述
android:columnWidth 設置列的寬度。
android:gravity 設置此組件中的內容在組件中的位置。可選的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical可以多選,用「|」分開。
android:horizontalSpacing 兩列之間的間距。
android:numColumns 設置列數。
android:stretchMode 縮放模式。
android:verticalSpacing 兩行之間的間距。
2.實例1
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<GridView
android:id="@+id/GridView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:columnWidth="90dp"
android:numColumns="3"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
</LinearLayout>
⑸ 如何實現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的方法(題主的情況)。所以要看情況而定。
⑹ android如何動態更新二級聯動spinner
spinner有一個setSelection(),將spinner設為全局變數後用spinner.setSelection(GestureConstant.FILE_GESTURE, false);就可以了。
貼一部分代碼,不完整。
Activity
[java] view plain
Intent fileIntent = new Intent(FileManager.this,
CreateGestureActivity.class);
fileIntent.putExtra("file", "file");
startActivity(fileIntent);
⑺ 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();