我正在尝试让一个微调器 (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
的类型不同,您需要 context
或 activity
的对象引用来调用 ArrayAdapter
构造函数。这个解决方案应该适合您。
关于Java - 通过微调器更改微调器的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39015335/