實現效果如圖所示。選擇省市後,第二個button自動填充對應的市。每個button對應的自定義的GridView。
1、界面XML
1、主界面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
style="@style/TextViewStyle"
android:layout_gravity="center_vertical"
android:text="發證機關:" />
<Button
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<Button
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/texthphmbt"
style="@style/TextViewStyle"
android:text="號牌號碼:" />
<EditText
android:id="@+id/txtVehNum"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:focusable="false"
android:inputType="none" />
<EditText
android:id="@+id/txtVehNumInput"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:inputType="text" />
</LinearLayout>
</LinearLayout>
2、province_grid
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:orientation="vertical"
android:padding="20dp" >
<GridView
android:id="@+id/grid_P"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:horizontalSpacing="10px"
android:numColumns="4"
android:scrollbars="vertical"
android:verticalSpacing="20px" />
</LinearLayout>
3、province_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:background="#ffffff" >
<RadioButton
android:id="@+id/radiobutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="15dp"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false" />
<TextView
android:id="@+id/list_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textColor="#000000" />
</LinearLayout>
2、代碼
1、資源
<!-- 區域名稱 -->
<string-array name="area_name">
<item>京</item>
<item>津</item>
<item>冀</item>
<item>滬</item>
<item>渝</item>
<item>晉</item>
<item>蒙</item>
<item>遼</item>
<item>吉</item>
<item>黑</item>
<item>蘇</item>
<item>浙</item>
<item>皖</item>
<item>閩</item>
<item>贛</item>
<item>魯</item>
<item>豫</item>
<item>鄂</item>
<item>湘</item>
<item>粵</item>
<item>桂</item>
<item>瓊</item>
<item>川</item>
<item>貴</item>
<item>雲</item>
<item>藏</item>
<item>陝</item>
<item>甘</item>
<item>青</item>
<item>寧</item>
<item>新</item>
</string-array>
<string-array name="ji">
<item>冀A</item>
<item>冀B</item>
<item>冀C</item>
<item>冀D</item>
<item>冀E</item>
<item>冀F</item>
<item>冀G</item>
<item>冀H</item>
<item>冀J</item>
<item>冀R</item>
<item>冀T</item>
<item>冀O</item>
</string-array>
2、MainActivity
package com.example.gridview_liandong;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends Activity {
private EditText txtBoxVehNum, txtBoxVehNumInput;
private Button button_P, button_C;
private String[] city,province;
private AlertDialog dialog, dialog_C;
private Builder builder_P, builder_C;
private LinearLayout layout_P, layout_C;
private GridView gridView_P, gridView_C;
private GridAdapter adapter_P, adapter_C;
private int index = 0, index_C = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initview();
}
private void initview() {
// 發證機關選擇
button_P = (Button) findViewById(R.id.button1);
button_C = (Button) findViewById(R.id.button2);
txtBoxVehNum = (EditText) this.findViewById(R.id.txtVehNum);// 車牌號
LayoutInflater inflate_P = LayoutInflater.from(this);
LayoutInflater inflate_C = LayoutInflater.from(this);
layout_P = (LinearLayout) inflate_P.inflate(R.layout.province_grid, null);
layout_C = (LinearLayout) inflate_C.inflate(R.layout.city_grid, null);
gridView_P = (GridView) layout_P.findViewById(R.id.grid_P);
gridView_C = (GridView) layout_C.findViewById(R.id.grid_C);
province = this.getResources().getStringArray(
R.array.area_name);
adapter_P = new GridAdapter(this, province);
gridView_P.setAdapter(adapter_P);
builder_P = new Builder(MainActivity.this);
builder_P.setView(layout_P);
builder_C = new Builder(MainActivity.this);
builder_C.setView(layout_C);
int childId = getResources().getIdentifier(
getPackageName() + ":array/ji ", null, null);
city = getResources().getStringArray(childId);
adapter_C = new GridAdapter(this, city);
gridView_C.setAdapter(adapter_C);
//默認發證機關配置
button_P.setText("冀");
button_C.setText("冀A");
txtBoxVehNum.setText("冀A");
button_P.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (dialog == null) {
dialog = builder_P.create();
}
dialog.show();
}
});
gridView_P.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
button_P.setText(getResources()
.getStringArray(R.array.area_name)[position]);
dialog.dismiss();
adapter_P.map.put(index, false);
adapter_P.map.put(position, true);
index = position;
adapter_P.notifyDataSetChanged();
int areaCodeId = getResources().getIdentifier(
getPackageName() + ":array/area_code", null, null);
String[] areaCodes = getResources().getStringArray(areaCodeId);
int childId = getResources().getIdentifier(
getPackageName() + ":array/" + areaCodes[position],
null, null);
city = getResources().getStringArray(childId);
adapter_C = new GridAdapter(MainActivity.this, city);
gridView_C.setAdapter(adapter_C);
button_C.setText(city[0]);
txtBoxVehNum.setText(button_C.getText().toString());
}
});
button_C.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (dialog_C == null) {
dialog_C = builder_C.create();
}
dialog_C.show();
}
});
gridView_C.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
button_C.setText(city[position]);
dialog_C.dismiss();
adapter_C.map.put(index_C, false);
adapter_C.map.put(position, true);
index_C = position;
adapter_C.notifyDataSetChanged();
txtBoxVehNum.setText(button_C.getText().toString());
}
});
}
}