Java - 通过微调器更改微调器的值

标签 java android

我正在尝试让一个微调器 (2) 更改另一个微调器 (1) 的内容。

我目前在第二个微调器的数组适配器中遇到错误“错误:(28, 57) 错误:无法推断 ArrayAdapter 的类型参数<>”

这是我的代码:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

public class DetailsForm extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.details_form);

        final Spinner carBrand = (Spinner) findViewById(R.id.carBrand);
        String[] items = new String[]{"Honda", "Nissan", "Toyota"};
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, items);
        carBrand.setAdapter(adapter);
        carBrand.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
            String carBrand = parent.getSelectedItem().toString();
                if (carBrand.equals("Nissan")) {
                    final Spinner model = (Spinner) findViewById(R.id.model);
                    String[] models = new String[]{"S14", "R34", "240SX"};
                    ArrayAdapter<String> modeladapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, models);
                    model.setAdapter(modeladapter);

                } else if (carBrand.equals("Honda")) {
                    Spinner model = (Spinner) findViewById(R.id.model);
                    String[] models = new String[]{"Civic", "NSX", "Accord"};
                    ArrayAdapter<String> modeladapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, models);
                    model.setAdapter(modeladapter);
                } else if (carBrand.equals("Toyota")) {
                    Spinner model = (Spinner) findViewById(R.id.model);
                    String[] models = new String[]{"Supra", "AE86", "GT86"};
                    ArrayAdapter<String> modeladapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, models);
                    model.setAdapter(modeladapter);
                }
            }

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

            }
        });

任何帮助将不胜感激。

最佳答案

更改您的代码

来自:

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
            String carBrand = parent.getSelectedItem().toString();
            if (carBrand.equals("Nissan")) {
                final Spinner model = (Spinner) findViewById(R.id.model);
                String[] models = new String[]{"S14", "R34", "240SX"};
                ArrayAdapter<String> modeladapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, models);
                model.setAdapter(modeladapter);

            } else if (carBrand.equals("Honda")) {
                Spinner model = (Spinner) findViewById(R.id.model);
                String[] models = new String[]{"Civic", "NSX", "Accord"};
                ArrayAdapter<String> modeladapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, models);
                model.setAdapter(modeladapter);
            } else if (carBrand.equals("Toyota")) {
                Spinner model = (Spinner) findViewById(R.id.model);
                String[] models = new String[]{"Supra", "AE86", "GT86"};
                ArrayAdapter<String> modeladapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, models);
                model.setAdapter(modeladapter);
            }
        }

致:

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
            String carBrand = parent.getSelectedItem().toString();
            if (carBrand.equals("Nissan")) {
                final Spinner model = (Spinner) findViewById(R.id.model);
                String[] models = new String[]{"S14", "R34", "240SX"};
                ArrayAdapter<String> modeladapter = new ArrayAdapter<>(YourActivity.this, android.R.layout.simple_spinner_dropdown_item, models);
                model.setAdapter(modeladapter);

            } else if (carBrand.equals("Honda")) {
                Spinner model = (Spinner) findViewById(R.id.model);
                String[] models = new String[]{"Civic", "NSX", "Accord"};
                ArrayAdapter<String> modeladapter = new ArrayAdapter<>(YourActivity.this, android.R.layout.simple_spinner_dropdown_item, models);
                model.setAdapter(modeladapter);
            } else if (carBrand.equals("Toyota")) {
                Spinner model = (Spinner) findViewById(R.id.model);
                String[] models = new String[]{"Supra", "AE86", "GT86"};
                ArrayAdapter<String> modeladapter = new ArrayAdapter<>(YourActivity.this, android.R.layout.simple_spinner_dropdown_item, models);
                model.setAdapter(modeladapter);
            }
        }

YourActivity 是您的activity 类名称。此更改是必要的,因为在 OnItemSelectedListener 内部,this 表示监听器的对象,其类型与 context 的类型不同,您需要 contextactivity 的对象引用来调用 ArrayAdapter 构造函数。这个解决方案应该适合您。

关于Java - 通过微调器更改微调器的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39015335/

相关文章:

Android - Assertj Android - 运行错误

Android:meminfo_proc_show() 3.10.65+ 尝试执行 LOS12.1 端口时启动循环内核崩溃

android - 提供的依赖只能是jar

java - 如何在扩展 Activity 中显示 Admob 插页式广告

java - 有什么方法可以在 Java 应用程序中为我的 UI 使用 HTML 和 CSS?

Java - Azure Functions 如何传递 VM 参数?

java - 为什么两个程序有前向引用错误而第三个没有?

java - 为什么 SSL 的性能在 java 中的循环值中不同

java - 如何处理多个 ListenableFuture? ( Spring )

android - 我的 android studio 中没有 "Generate Signed Bundle"菜单选项