【www.bbyears.com--php常用代码】
省市区三级联动,采用的是sqlite本地数据库,需要使用SimpleCursorAdapter类来配合下拉列表Spinner实现。关于Spinner和SimpleCursorAdapter的组合请看,
Android使用SimpleCursorAdapter填充下拉列表Spinner用法
先贴上Spinner和SimpleCursorAdapter整合的代码:
代码如下Cursor c = getContentResolver().query(Table.Region.CONTENT_URI, null, Table.Region.PARENT_ID+"="+parentRegionId, null, Table.Region._ID +" asc");
final String[] columns = new String[] { Table.Region.REGION_NAME };
final int[] to = new int[] { android.R.id.text1 };
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c, columns, to);
mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
view.setAdapter(mAdapter);
下面我们再来看至于省份城市地区三级联动效果
三级联动实现原理:用户选择省份后,根据省份Id加载对应的城市列表,由于Spinner默认选择第一项,即城市列表加载完后,又会加载对应的地区列表信息。
使用Spinner的OnItemSelectedListener监听器类实现三级联动:
代码如下//加载省份
updateRegionInfo(spinner_province, 1);
spinner_province.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent, View view,
int position, long id) {
//加载下一级(城市)
Cursor selectedCursor = (Cursor) parent.getSelectedItem();
updateRegionInfo(spinner_city, CursorUtil.getInt(selectedCursor, Table.Region.REGION_ID));
}
@Override
public void onNothingSelected(AdapterView> parent) {
}
});
spinner_city.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent, View view,
int position, long id) {
//加载下一级(地区)
Cursor selectedCursor = (Cursor) parent.getSelectedItem();
updateRegionInfo(spinner_district, CursorUtil.getInt(selectedCursor, Table.Region.REGION_ID));
}
@Override
public void onNothingSelected(AdapterView> parent) {
}
});
使用SimpleCursorAdapter绑定Sqlite数据库到Spinner
private void updateRegionInfo(Spinner view, int parentRegionId) {
final ListAdapter adapter = (ListAdapter) view.getAdapter();
if(null != adapter && adapter instanceof CursorAdapter) {
final CursorAdapter cursorAdapter = (CursorAdapter) adapter;
cursorAdapter.changeCursor(null);
view.setAdapter(null);
}
Cursor c = getContentResolver().query(Table.Region.CONTENT_URI, null, Table.Region.PARENT_ID+"="+parentRegionId, null, Table.Region._ID +" asc");
final String[] columns = new String[] { Table.Region.REGION_NAME };
final int[] to = new int[] { android.R.id.text1 };
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, c, columns, to);
mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
view.setAdapter(mAdapter);
}