2 csh 34 csh_34 于 2013.01.18 13:50 提问

如何改变spinner中的数组源

在程序中有一个 spinner5 ,我在 values folder 中创建了两个字符串数组 name_array 和 type_array 。还有两个 radio buttons: radiobtn1 和 radiobtn2 。
我想实现的是当每个单选按钮被选中时改变 spinner5 的内容。

if (radiobtn1 被选中)
then
   spinner5 从 name_array 中显示内容 

else If (radiobtn2 被选中)
then 
  spinner5 从  type_array 中显示内容 

如何实现这个功能呢?

2个回答

curie_87
curie_87   2013.01.22 10:32
已采纳

在 xml中写入下面的代码

    <RadioGroup 
         android:layout_toRightOf="@+id/txtpref"
         android:layout_marginLeft="10sp"
         android:orientation="horizontal"
             android:layout_width="wrap_content" 
         android:layout_height="wrap_content">
        <RadioButton 
            android:textColor="#000000"
            android:text="Male" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:id="@+id/radiobutton1"/>
        <RadioButton 
            android:textColor="#000000"
            android:text="Female"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:id="@+id/radiobutton2"/>    
    </RadioGroup> 


    In Your Java file

    RadioButton radiobutton1,radiobutton2;
    String [] name_array,type_array;
    String [] temparray;

    temparray = (name_array or type_array) // use any which you want disaplay first and use temparray to pass your adapter 

ArrayAdapter arrayAdapter =new ArrayAdapter<String>(Activity_Name.this,android.R.layout.simple_spinner_item, temparray);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_it‌​em);

    radiobutton1 = (RadioButton) findViewById(R.id.radiobutton1);
    radiobutton2 = (RadioButton) findViewById(R.id.radiobutton2);

    radiobutton1.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    // TODO Auto-generated method stub
                    if (isChecked) {
                    // you want spinner5 to display contents from name_array.   
                                     temparray = name_array;
                                     your_adapter.notifyDataSetChanged();
                    }
                }
        });

    radiobutton2.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    // TODO Auto-generated method stub
                    if (isChecked) {
                    // you want spinner5 to display contents from type_array.   
                                     temparray = type_array;
                                     your_adapter.notifyDataSetChanged();
                    }
                }
            });
cytown
cytown   2013.01.18 14:06

设置两个adapter,根据radio的不同选择设置不同的adapter.

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!