【问题标题】:Android: POPULATE 4 SPINNERS BASED ON SELECTION OF 1,2 & 3 SPINNERSAndroid:根据 1,2 和 3 个旋转器的选择填充 4 个旋转器
【发布时间】:2015-11-04 17:33:59
【问题描述】:

我对 android 开发非常陌生,我正在尝试制作相互中继的 mutli spinners,我已经成功地在另一个上进行了中继,但我无法在 2 日进行第 3 次中继,也无法在第 4 次进行中继第三。

感谢您的帮助

这是我的 XML

    <Spinner
    android:id="@+id/spinner1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="8dip"
    android:layout_marginRight="8dip"
    android:layout_marginTop="10dip"
    android:entries="@array/Type" />

<Spinner
    android:id="@+id/spinner2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dip"
    android:layout_marginLeft="8dip"
    android:layout_marginRight="8dip"/>

<Spinner
    android:id="@+id/spinner3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dip"
    android:layout_marginLeft="8dip"
    android:layout_marginRight="8dip"/>

<Spinner
    android:id="@+id/spinner4"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dip"
    android:layout_marginLeft="8dip"
    android:layout_marginRight="8dip"

这是我的java

public class VehicleProfile extends Activity implements AdapterView.OnItemSelectedListener {
Spinner s1,s2, s3, s4;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_vehicle_profile);
    s1 = (Spinner)findViewById(R.id.spinner1);
    s2 = (Spinner)findViewById(R.id.spinner2);
    s3 = (Spinner)findViewById(R.id.spinner3);
    s4 = (Spinner)findViewById(R.id.spinner4);
    s1.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // TODO Auto-generated method stub
    String sp1= String.valueOf(s1.getSelectedItem());
    Toast.makeText(this, sp1, Toast.LENGTH_SHORT).show();
    if(sp1.contentEquals("List-1")) {
        List<String> list = new ArrayList<String>();
        list.add("Select Model");
        list.add("Alfa Romeo");
        list.add("Audi");
        list.add("BMW");
        list.add("Chevrolet");
        list.add("Citroen");
        list.add("Dacia");
        list.add("Ford");
        list.add("Honda");
        list.add("hyundai");
        list.add("Jaguar");
        list.add("KIA");
        list.add("KTM");
        list.add("Land Rover");
        list.add("Mazda");
        list.add("Mercedes-Benz");
        list.add("Mini Cooper");
        list.add("Nissan");
        list.add("Opel");
        list.add("Peugeot");
        list.add("Porsche");
        list.add("Renault");
        list.add("Saab");
        list.add("SEAT");
        list.add("Skoda");
        list.add("Volvo");
        list.add("VW");
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, list);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        dataAdapter.notifyDataSetChanged();
        s2.setAdapter(dataAdapter);
    }
    if(sp1.contentEquals("List-2")) {
        List<String> list = new ArrayList<String>();
        list.add("Select Model");
        list.add("Alfa Romeo");
        list.add("Audi");
        list.add("BMW");
        list.add("Cadillac");
        list.add("Chevrolet");
        list.add("Chrysler");
        list.add("Citroen");
        list.add("Dacia");
        list.add("Daewoo");
        list.add("Dodge");
        list.add("Fiat");
        list.add("Ford");
        list.add("Honda");
        list.add("Hymer");
        list.add("hyundai");
        list.add("Infiniti");
        list.add("Isuzu");
        list.add("Iveco");
        list.add("Jaguar");
        list.add("Jeep");
        list.add("KIA");
        list.add("Lancia");
        list.add("Land Rover");
        list.add("Lexus");
        list.add("Maserati");
        list.add("Mazda");
        list.add("Mercedes-Benz");
        list.add("MG");
        list.add("MG(Rover)");
        list.add("Mini Cooper");
        list.add("Mitsubishi");
        list.add("Nissan");
        list.add("Opel");
        list.add("Peugeot");
        list.add("Porsche");
        list.add("Renault");
        list.add("Rover");
        list.add("Saab");
        list.add("SEAT");
        list.add("Skoda");
        list.add("Smart");
        list.add("SsangYong");
        list.add("Subaru");
        list.add("Suzuki");
        list.add("Toyota");
        list.add("Volvo");
        list.add("VW");
        ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, list);
        dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        dataAdapter2.notifyDataSetChanged();
        s2.setAdapter(dataAdapter2);
    }


}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

}

我曾尝试将这2个函数放在[public void onNothingSelected(AdapterView arg0) {],之前,但是没有用,我可以在页面中看到spiners,但是它们是空的,无法打开

String sp2= String.valueOf(s2.getSelectedItem());
    Toast.makeText(this, sp2, Toast.LENGTH_SHORT).show();
    if(sp2.contentEquals("Alfa Romeo")) {
        List<String> list = new ArrayList<String>();
        list.add("Select Engine");
        list.add("145 1.9 JTD 8V");
        list.add("146 1.9 JTD 8V");
        ArrayAdapter<String> dataAdapter3 = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, list);
        dataAdapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        dataAdapter3.notifyDataSetChanged();
        s3.setAdapter(dataAdapter3);
    }

    String sp3= String.valueOf(s3.getSelectedItem());
    Toast.makeText(this, sp3, Toast.LENGTH_SHORT).show();
    if(sp3.contentEquals("145 1.9 JTD 8V")) {
        List<String> list = new ArrayList<String>();
        list.add("Select Engine");
        list.add("77 kw, 105 hp, 255 nm");
        list.add("146 1.9 JTD 8V");
        ArrayAdapter<String> dataAdapter4 = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, list);
        dataAdapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        dataAdapter4.notifyDataSetChanged();
        s3.setAdapter(dataAdapter4);
    }

【问题讨论】:

    标签: android spinner


    【解决方案1】:

    微调器二和三不会触发 onItemSelected 您应该添加:

        s2.setOnItemSelectedListener(this);
        s3.setOnItemSelectedListener(this);
    

    像这样编辑你的代码:

    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // TODO Auto-generated method stub
         if (arg1.getId()==R.id.spnnier1){
        String sp1= String.valueOf(s1.getSelectedItem());
        Toast.makeText(this, sp1, Toast.LENGTH_SHORT).show();
        if(sp1.contentEquals("List-1")) {
            List<String> list = new ArrayList<String>();
            list.add("Select Model");
            list.add("Alfa Romeo");
            list.add("Audi");
            list.add("BMW");
            list.add("Chevrolet");
            list.add("Citroen");
            list.add("Dacia");
            list.add("Ford");
            list.add("Honda");
            list.add("hyundai");
            list.add("Jaguar");
            list.add("KIA");
            list.add("KTM");
            list.add("Land Rover");
            list.add("Mazda");
            list.add("Mercedes-Benz");
            list.add("Mini Cooper");
            list.add("Nissan");
            list.add("Opel");
            list.add("Peugeot");
            list.add("Porsche");
            list.add("Renault");
            list.add("Saab");
            list.add("SEAT");
            list.add("Skoda");
            list.add("Volvo");
            list.add("VW");
            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item, list);
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            dataAdapter.notifyDataSetChanged();
            s2.setAdapter(dataAdapter);
        }
    
        if(sp1.contentEquals("List-2")) {
            List<String> list = new ArrayList<String>();
            list.add("Select Model");
            list.add("Alfa Romeo");
            list.add("Audi");
            list.add("BMW");
            list.add("Cadillac");
            list.add("Chevrolet");
            list.add("Chrysler");
            list.add("Citroen");
            list.add("Dacia");
            list.add("Daewoo");
            list.add("Dodge");
            list.add("Fiat");
            list.add("Ford");
            list.add("Honda");
            list.add("Hymer");
            list.add("hyundai");
            list.add("Infiniti");
            list.add("Isuzu");
            list.add("Iveco");
            list.add("Jaguar");
            list.add("Jeep");
            list.add("KIA");
            list.add("Lancia");
            list.add("Land Rover");
            list.add("Lexus");
            list.add("Maserati");
            list.add("Mazda");
            list.add("Mercedes-Benz");
            list.add("MG");
            list.add("MG(Rover)");
            list.add("Mini Cooper");
            list.add("Mitsubishi");
            list.add("Nissan");
            list.add("Opel");
            list.add("Peugeot");
            list.add("Porsche");
            list.add("Renault");
            list.add("Rover");
            list.add("Saab");
            list.add("SEAT");
            list.add("Skoda");
            list.add("Smart");
            list.add("SsangYong");
            list.add("Subaru");
            list.add("Suzuki");
            list.add("Toyota");
            list.add("Volvo");
            list.add("VW");
            ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item, list);
            dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            dataAdapter2.notifyDataSetChanged();
            s2.setAdapter(dataAdapter2);
        }
    
      }
    else 
    
    
    
    if (arg1.getId()==R.id.spinner2){
         String sp2= String.valueOf(s2.getSelectedItem());
        Toast.makeText(this, sp2, Toast.LENGTH_SHORT).show();
        if(sp2.contentEquals("Alfa Romeo")) {
            List<String> list = new ArrayList<String>();
            list.add("Select Engine");
            list.add("145 1.9 JTD 8V");
            list.add("146 1.9 JTD 8V");
            ArrayAdapter<String> dataAdapter3 = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item, list);
            dataAdapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            dataAdapter3.notifyDataSetChanged();
            s3.setAdapter(dataAdapter3);
        }
       else 
           if (arg1.getId()==R.id.spinner3){
        String sp3= String.valueOf(s3.getSelectedItem());
        Toast.makeText(this, sp3, Toast.LENGTH_SHORT).show();
        if(sp3.contentEquals("145 1.9 JTD 8V")) {
            List<String> list = new ArrayList<String>();
            list.add("Select Engine");
            list.add("77 kw, 105 hp, 255 nm");
            list.add("146 1.9 JTD 8V");
            ArrayAdapter<String> dataAdapter4 = new ArrayAdapter<String>(this,
                    android.R.layout.simple_spinner_item, list);
            dataAdapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            dataAdapter4.notifyDataSetChanged();
            s3.setAdapter(dataAdapter4);
        }
    

    }

    【讨论】:

    • 受保护的 void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_vehicle_profile); s1 = (Spinner)findViewById(R.id.spinner1); s2 = (Spinner)findViewById(R.id.spinner2); s3 = (Spinner)findViewById(R.id.spinner3); s4 = (Spinner)findViewById(R.id.spinner4); s1.setOnItemSelectedListener(this); s2.setOnItemSelectedListener(this);
    • 我是这样添加的,但它甚至不允许我从第二个微调器中进行选择
    • arg1.getId 允许您捕获更改后的微调器
    • 我已经重新编辑了,过去有一些错误,如果有效,请指出
    • 我把你的代码复制/过去并在最后添加了缺少的括号,但现在我只能看到第一个微调器中的值
    猜你喜欢
    • 2023-04-04
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2011-09-28
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多