android 中spinner 实现三级联动

来源:互联网 发布:mac 访问ntfs 免费版 编辑:程序博客网 时间:2024/05/16 11:05

java代码如下


package com.zz.spinner;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.EditText;import android.widget.Spinner;import android.widget.Toast;import com.zz.spinner.bean.ThreeEntity;import com.zz.spinner.bean.TwoEntity;import java.util.ArrayList;import java.util.List;public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener{    private Spinner oneSpinner;    private Spinner twoSpinner;    private Spinner threeSpinner;    private EditText editResult;    /**一级集合*/    private List<String> oneList = new ArrayList<String>();    /**二级集合*/    private List<TwoEntity> twoList = new ArrayList<TwoEntity>();    /**三级集合*/    private List<ThreeEntity> threeList = new ArrayList<ThreeEntity>();    /**默认集合*/    private List<String> indexList ;    /**适配器*/    private ArrayAdapter<String> adapter;    /**一级名称*/    private String oneName;    /**二级名称*/    private String twoName;    /**三级名称*/    private String threeName;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initData();        // 初始化数据        adapterData(oneList,oneSpinner);        Log.i("zhouzhuo","日志打印了啊=====");    }    private void initData() {        ///增加一级数据        oneList.add("山东");        oneList.add("河北");        oneList.add("河南");        //添加二级数据        TwoEntity two = new TwoEntity();        two.setTwoName("济南");        two.setParentName("山东");        TwoEntity two3 = new TwoEntity();        two3.setTwoName("青岛");        two3.setParentName("山东");        TwoEntity two4 = new TwoEntity();        two4.setTwoName("德州");        two4.setParentName("山东");        TwoEntity two1 = new TwoEntity();        two1.setTwoName("石家庄");        two1.setParentName("河北");        TwoEntity two5 = new TwoEntity();        two5.setTwoName("保定");        two5.setParentName("河北");        TwoEntity two2 = new TwoEntity();        two2.setTwoName("郑州");        two2.setParentName("河南");        twoList.add(two);        twoList.add(two1);        twoList.add(two2);        twoList.add(two3);        twoList.add(two4);        twoList.add(two5);        //添加三级数据        ThreeEntity three = new ThreeEntity();        three.setTwoName("章丘");        three.setParentName("济南");        ThreeEntity three1 = new ThreeEntity();        three1.setTwoName("城阳");        three1.setParentName("青岛");        ThreeEntity three2 = new ThreeEntity();        three2.setTwoName("齐河");        three2.setParentName("德州");        ThreeEntity three3 = new ThreeEntity();        three3.setTwoName("长安");        three3.setParentName("石家庄");        ThreeEntity three4 = new ThreeEntity();        three4.setTwoName("清苑");        three4.setParentName("保定");        ThreeEntity three5 = new ThreeEntity();        three5.setTwoName("登封");        three5.setParentName("郑州");        threeList.add(three);        threeList.add(three1);        threeList.add(three2);        threeList.add(three3);        threeList.add(three4);        threeList.add(three5);    }    private void initView() {        oneSpinner = (Spinner) findViewById(R.id.one_spinner);        twoSpinner = (Spinner) findViewById(R.id.two_spinner);        threeSpinner = (Spinner) findViewById(R.id.three_spinner);        oneSpinner.setOnItemSelectedListener(this);        twoSpinner.setOnItemSelectedListener(this);        threeSpinner.setOnItemSelectedListener(this);        editResult = (EditText) findViewById(R.id.display_edit);    }    @Override    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {            switch (parent.getId()){                case R.id.one_spinner://一级列表                    Toast.makeText(this,"点击了一级列表",Toast.LENGTH_SHORT).show();                    oneName = oneSpinner.getItemAtPosition(position).toString();                    //  找到相应的二级数据                    selectTwoData(oneName);                    //适配二级数据                    adapterData(indexList,twoSpinner);                    break;                case R.id.two_spinner://二级列表                    Toast.makeText(this,"点击了二级列表",Toast.LENGTH_SHORT).show();                    twoName = twoSpinner.getItemAtPosition(position).toString();                    //找到相应的三级数据                    selectThreeData(twoName);                    //适配三级数据                    adapterData(indexList,threeSpinner);                    break;                case R.id.three_spinner://  三级列表                    threeName =threeSpinner.getItemAtPosition(position).toString();                    editResult.setText(oneName+" "+twoName+" "+threeName);                    break;            }    }    /***     * 找到相应的三级数据     * @param twoName     */    private void selectThreeData(String twoName) {        indexList = new ArrayList<String>();        // 循环三级列表        for(int i=0;i<threeList.size();i++){            if(twoName.equals(threeList.get(i).getParentName())){                indexList.add(threeList.get(i).getTwoName());            }        }     }    private void adapterData(List<String> indexList, Spinner twoSpinner) {        Log.i("zhouzhuo","indexlist size:"+indexList.size());            adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,indexList);            //设置下拉列表风格            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);            //将 adapter设置到spinner中            twoSpinner.setAdapter(adapter);            //twoSpinner.setVisibility(View.VISIBLE);    }    /**     *     * public void onNothingSelected(AdapterView<?> parent) {     oneSpinner.setSelection(0);     twoSpinner.setSelection(0);     threeSpinner.setSelection(0);     }     * @param parent     */    @Override    public void onNothingSelected(AdapterView<?> parent) {        Log.i("zhouzhuo","onNothingSelected");        oneSpinner.setSelection(0);        twoSpinner.setSelection(0);        threeSpinner.setSelection(0);    }    /***     * 找到相应的二级数据     * @param oneName     */    private void selectTwoData(String oneName) {        indexList = new ArrayList<String>();        //循环三级数据集合,找到符合条件的数据        for(int i=0;i<twoList.size();i++){            if(oneName.equals(twoList.get(i).getParentName())){                indexList.add(twoList.get(i).getTwoName());            }        }    }}
xml  文件


<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_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:scrollbarAlwaysDrawVerticalTrack="false" >            <TextView                android:id="@+id/province_text"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="省份:" >            </TextView>            <Spinner                android:id="@+id/one_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:scrollbarAlwaysDrawVerticalTrack="false" >            <TextView                android:id="@+id/city_text"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="城市:" >            </TextView>            <Spinner                android:id="@+id/two_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:scrollbarAlwaysDrawVerticalTrack="false" >            <TextView                android:id="@+id/county_text"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="县城镇:" >            </TextView>            <Spinner                android:id="@+id/three_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>
0 0