Android 一个活动中的两个微调器

Android 一个活动中的两个微调器,android,android-spinner,Android,Android Spinner,我有两个旋转器 这是我的活动 package com.example.belajarcombobox; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android

我有两个旋转器

这是我的活动

package com.example.belajarcombobox;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;


public class CreateComboBox extends Activity implements AdapterView.OnItemSelectedListener {

    TextView selection;
    TextView selection2;
    String[] countries = {"Amerika","Argentina","Brazil"};

    String[] city = {"London","Paris","Buenos Aires"};

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        selection = (TextView) findViewById(R.id.selection);
        Spinner spin = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, countries);
        aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(aa);
        spin.setOnItemSelectedListener(this);

        selection2 = (TextView) findViewById(R.id.selection2);
        Spinner spin2 = (Spinner) findViewById(R.id.spinner2);
        ArrayAdapter<String> bb = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, city);
        bb.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(bb);
        spin2.setOnItemSelectedListener(this);
    }

    public void onItemSelected(AdapterView<?> parent, View v, int position, long id ){
        Spinner spin = (Spinner)parent;
        Spinner spin2 = (Spinner)parent;
        if(spin.getId() == R.id.spinner)
        {
            Toast.makeText(this, "Your choose :" + countries[position],Toast.LENGTH_SHORT).show();                 
        }
        if(spin2.getId() == R.id.spinner2)
        {
            Toast.makeText(this, "Your choose :" + city[position],Toast.LENGTH_SHORT).show();       
        }

    }

    public void onNothingSelected(AdapterView<?> parent){
        Toast.makeText(this, "Choose Countries :", Toast.LENGTH_SHORT).show();
    }
}
package com.example.belajarcombobox;
导入android.app.Activity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Spinner;
导入android.widget.TextView;
导入android.widget.Toast;
公共类CreateComboBox扩展活动实现AdapterView.OnItemSelectedListener{
文本视图选择;
文本视图选择2;
字符串[]国家={“美国”、“阿根廷”、“巴西”};
字符串[]城市={“伦敦”、“巴黎”、“布宜诺斯艾利斯”};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
selection=(TextView)findViewById(R.id.selection);
微调器旋转=(微调器)findViewById(R.id.Spinner);
ArrayAdapter aa=新的ArrayAdapter(这是android.R.layout.simple\u微调器项目,国家/地区);
aa.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转适配器(aa);
spin.setOnItemSelectedListener(此);
selection2=(TextView)findViewById(R.id.selection2);
Spinner spin2=(Spinner)findViewById(R.id.Spinner 2);
ArrayAdapter bb=新的ArrayAdapter(这是android.R.layout.simple\u微调器项目,城市);
bb.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转适配器(bb);
spin2.setOnItemSelectedListener(此);
}
已选择公共位置(AdapterView父视图、视图v、整型位置、长id){
微调器旋转=(微调器)父对象;
微调器微调2=(微调器)父对象;
if(spin.getId()==R.id.spinner)
{
Toast.makeText(这是“您的选择:+国家[位置],Toast.LENGTH_SHORT).show();
}
if(spin2.getId()==R.id.spinner2)
{
Toast.makeText(这是“您的选择:”+city[position],Toast.LENGTH\u SHORT.show();
}
}
未选择公共无效(AdapterView父级){
Toast.makeText(这个“选择国家:”,Toast.LENGTH_SHORT.show();
}
}
运行此活动时,第一个微调器值为城市,第二个微调器值为空

如何在同一活动中运行2个微调器? 第一个微调器值是国家,第二个微调器值是城市

Alex使用

spin2.setAdapter(bb);
而不是

spin.setAdapter(bb);

当前您正在为第二个微调器设置适配器

您应该使用make spin.setAdapter(bb);至spin2。设置适配器(bb)

不要将实现添加到活动类中

创建两个内部类,每个类处理一个微调器

public class CreateComboBox extends Activity implements AdapterView.OnItemSelectedListener
{
    TextView selection;
    TextView selection2;
    String[] countries = {"Amerika","Argentina","Brazil"};

    String[] city = {"London","Paris","Buenos Aires"};

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        selection = (TextView) findViewById(R.id.selection);
        Spinner spin = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, countries);
        aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(aa);
        spin.setOnItemSelectedListener(new CountriesSpinnerClass());

        selection2 = (TextView) findViewById(R.id.selection2);
        Spinner spin2 = (Spinner) findViewById(R.id.spinner2);
        ArrayAdapter<String> bb = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, city);
        bb.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(bb);
        spin2.setOnItemSelectedListener(new CitiesSpinnerClass());
    }

    class CountriesSpinnerClass implements AdapterView.OnItemSelectedListener
    {
        void onItemSelected(AdapterView<?> parent, View v, int position, long id)
        {
            Toast.makeText(v.getContext(), "Your choose :" + countries[position],Toast.LENGTH_SHORT).show();      
        }
    }

    class CitiesSpinnerClass implements AdapterView.OnItemSelectedListener
    {
        void onItemSelected(AdapterView<?> parent, View v, int position, long id)
        {
            Toast.makeText(v.getContext(), "Your choose :" + city[position],Toast.LENGTH_SHORT).show();        
        }
    }
}
公共类CreateComboBox扩展活动实现AdapterView.OnItemSelectedListener
{
文本视图选择;
文本视图选择2;
字符串[]国家={“美国”、“阿根廷”、“巴西”};
字符串[]城市={“伦敦”、“巴黎”、“布宜诺斯艾利斯”};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
selection=(TextView)findViewById(R.id.selection);
微调器旋转=(微调器)findViewById(R.id.Spinner);
ArrayAdapter aa=新的ArrayAdapter(这是android.R.layout.simple\u微调器项目,国家/地区);
aa.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转适配器(aa);
spin.setOnItemSelectedListener(新CountriesSpinnerClass());
selection2=(TextView)findViewById(R.id.selection2);
Spinner spin2=(Spinner)findViewById(R.id.Spinner 2);
ArrayAdapter bb=新的ArrayAdapter(这是android.R.layout.simple\u微调器项目,城市);
bb.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转适配器(bb);
spin2.setOnItemSelectedListener(新的CitiesSpinnerClass());
}
类CountriesSpinnerClass实现AdapterView.OnItemSelectedListener
{
已选择空视图(AdapterView父视图、视图v、整型位置、长id)
{
Toast.makeText(v.getContext(),“您的选择:”+countries[position],Toast.LENGTH\u SHORT.show();
}
}
类CitiesSpinnerClass实现AdapterView.OnItemSelectedListener
{
已选择空视图(AdapterView父视图、视图v、整型位置、长id)
{
Toast.makeText(v.getContext(),“您的选择:”+city[position],Toast.LENGTH\u SHORT.show();
}
}
}

我在使用spinner时遇到了很多问题,最终找到了这个解决方案

此库(SmartMaterialSpinner)为您节省了大量时间,因为它提供了一种简单的方法,可以添加任意数量的微调器,此外,还可以使用独立侦听器向微调器添加项目

以下是我在项目中如何使用它:

 String[] Durationarray = {"1 Month ", "2 Month ", "3 Month ", "4 Month ", "5 Month", 
         "6 Month ", "7 Month ", "8 Month ", "9 Month ", "10 Month ", "11 Month ",
            "1 Year", "2 Year", "3 Year", "4 Year", "5 Year", "6 Year", "7 Year", "8 Year", "9 Year", "10 Year"};

    spinner1 = (SmartMaterialSpinner) findViewById(R.id.spinner1_id);
    List<String> DurationList = new ArrayList();
    new WorkAround().convertStringArrToListArr(gam3iaDurationarray, DurationList);
    spinner1.setItem(DurationList);
    spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

    String[] egyptGovernemt = {"New Valley", "Matruh", "Red Sea", "Giza", "South Sinai", "North Sinai", "Suez", "Beheira", "Helwan", "Sharqia", "Dakahlia",
            "Kafr el-Sheikh" , "Alexandria", "Monufia", "Minya", "Gharbia", "Faiyum", "Qena", "Asyut", "Sohag", "Ismailia", "Beni Suef", "Qalyubia", "Aswan", "Damietta", "Cairo",
            "Port Said", "Luxor", "6th of October"};

    spinner2= (SmartMaterialSpinner) findViewById(R.id.spinner2);
    List<String>  cityList = new ArrayList<String>();
    new WorkAround().convertStringArrToListArr(egyptGovernemt, cityList);

    spinner2.setItem(cityList);
    spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {


        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
参考资料链接了解更多信息

我又有一个问题。我有一个表单输入页面。示例SaveActivity.java。在这个活动中,我有一个EditText按钮。如何将此CreateComboBox导入SaveActivity.java。那么,我在SaveActivity.java中有spinner@ρяσѕρєя K@Alexbelek:你在CreateComboBox中有两个微调器,你想将所选值从CreateComboBox移到SaveActivity吗?我编辑了我的问题。在我的问题中运行时,我添加了一个capture SaveActivity.java。但是微调器是空值。如何在此页面内导入有价值的国家/地区和城市?谢谢你K@Alexbelek:但是您在CreateComboBox活动中有两个微调器?@Alexbelek:您想让用户从CreateComboBox活动的微调器中选择的数据保存到saveActivity吗?请让我弄清楚这个答案对我有帮助。我有两个不同的微调器,有两个不同的值。两个微调器只显示一个值。但现在问题解决了。塔库尤。
 String[] Durationarray = {"1 Month ", "2 Month ", "3 Month ", "4 Month ", "5 Month", 
         "6 Month ", "7 Month ", "8 Month ", "9 Month ", "10 Month ", "11 Month ",
            "1 Year", "2 Year", "3 Year", "4 Year", "5 Year", "6 Year", "7 Year", "8 Year", "9 Year", "10 Year"};

    spinner1 = (SmartMaterialSpinner) findViewById(R.id.spinner1_id);
    List<String> DurationList = new ArrayList();
    new WorkAround().convertStringArrToListArr(gam3iaDurationarray, DurationList);
    spinner1.setItem(DurationList);
    spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

    String[] egyptGovernemt = {"New Valley", "Matruh", "Red Sea", "Giza", "South Sinai", "North Sinai", "Suez", "Beheira", "Helwan", "Sharqia", "Dakahlia",
            "Kafr el-Sheikh" , "Alexandria", "Monufia", "Minya", "Gharbia", "Faiyum", "Qena", "Asyut", "Sohag", "Ismailia", "Beni Suef", "Qalyubia", "Aswan", "Damietta", "Cairo",
            "Port Said", "Luxor", "6th of October"};

    spinner2= (SmartMaterialSpinner) findViewById(R.id.spinner2);
    List<String>  cityList = new ArrayList<String>();
    new WorkAround().convertStringArrToListArr(egyptGovernemt, cityList);

    spinner2.setItem(cityList);
    spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {


        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
public class WorkAround {


    public void convertStringArrToListArr(String [] myStringArray, List<String> myStringList){
        for (String s:myStringArray) {
            myStringList.add( s );
        }
    }

    // Number Checker Method
    public  boolean isNumeric(String str) {
        try {
            Double.parseDouble(str);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }
}
implements AdapterView.OnItemSelectedListener