android studio|Android Spinner实现省市区三级联动程序代码

更新时间:2018-09-13    来源:php常用代码    手机版     字体:

【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);
}

本文来源:http://www.bbyears.com/jiaocheng/44316.html

猜你感兴趣