Java 使用开关大小写和字符串基于第一个微调器更改第二个微调器的值
更新:我最终自己解决了这个问题,不过答案很有用,帮助我解决了这个问题。请参阅end以了解更新的Java 我知道这个问题已经被问过好几次了,但是解决方案对我不起作用,我也不知道为什么。。还有很多人提到JSON,我使用的是字符串数组 基本上我有两个微调器,我想根据选择的动物类型(第一种)显示特定的品种(第二种)。例如,当选择“狗”时,我希望它显示狗品种的字符串数组 我想试着用一个开关箱来做这件事,因为它对我来说似乎是最合乎逻辑的,而且我更了解它,尽管我对如何改进持开放态度 以下是我的情况-我在@Override上遇到了一个错误,错误日志对我没有多大帮助(Java新手): XMLJava 使用开关大小写和字符串基于第一个微调器更改第二个微调器的值,java,android,xml,Java,Android,Xml,更新:我最终自己解决了这个问题,不过答案很有用,帮助我解决了这个问题。请参阅end以了解更新的Java 我知道这个问题已经被问过好几次了,但是解决方案对我不起作用,我也不知道为什么。。还有很多人提到JSON,我使用的是字符串数组 基本上我有两个微调器,我想根据选择的动物类型(第一种)显示特定的品种(第二种)。例如,当选择“狗”时,我希望它显示狗品种的字符串数组 我想试着用一个开关箱来做这件事,因为它对我来说似乎是最合乎逻辑的,而且我更了解它,尽管我对如何改进持开放态度 以下是我的情况-我在@Ov
弦
<string-array name="pet_type">
<item>Dog</item>
<item>Cat</item>
<item>Rabbit</item>
<item>Hamster</item>
<item>Bird</item>
</string-array>
<string-array name="dog_breeds">
<item>Alsatian</item>
<item>Border Collie</item>
<item>Labrador</item>
</string-array>
<string-array name="cat_breeds">
<item>Persian</item>
<item>Hairless</item>
<item>Tomcat</item>
</string-array>
狗
猫
兔子
仓鼠
鸟
阿尔萨斯人
边境牧羊犬
拉布拉多
波斯人
无毛的
雄猫
Java(工作代码见下文)
公共课堂问卷调查活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.问卷);
微调器类型微调器=(微调器)findViewById(R.id.which\u微调器);
Spinner breedSpinner=(Spinner)findViewById(R.id.breed\U Spinner);
//~~~使用字符串数组和默认微调器布局创建ArrayAdapter
ArrayAdapter typeAdapter=ArrayAdapter.createFromResource(此,
R.array.pet_type,android.R.layout.simple_微调器_项);
ArrayAdapter dogBreedAdapter=ArrayAdapter.createFromResource(此,
R.array.dog_breeds,android.R.layout.simple_spinner_item);
ArrayAdapter catBreedAdapter=ArrayAdapter.createFromResource(此,
R.array.cat_breeds,android.R.layout.simple_spinner_item);
ArrayAdapter rabbitBreedAdapter=ArrayAdapter.createFromResource(此,
R.array.rabbit\u breeds,android.R.layout.simple\u spinner\u item);
ArrayAdapter-hamsterBreedAdapter=ArrayAdapter.createFromResource(此,
R.array.仓鼠品种,android.R.layout.simple\u微调器\u项目);
ArrayAdapter birdBreedAdapter=ArrayAdapter.createFromResource(此,
R.array.bird_breeds,android.R.layout.simple_spinner_item);
//~~~指定显示选项列表时要使用的布局
typeAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
dogbreedapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
catBreedAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
rabbitBreedAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
birdBreedAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
//~~~将适配器应用于微调器
typeSpinner.setAdapter(typeAdapter);
//breedSpinner.setEnabled(真);
typeSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
已选择公共视图(AdapterView父视图、视图selectedItemView、整型位置、长id){
if(typeSpinner.getSelectedItem().equals(“Dogs”)){
breedSpinner.setAdapter(dogBreedAdapter);
}else if(typeSpinner.getSelectedItem().equals(“Cats”)){
breedSpinner.setAdapter(catBreedAdapter);
}else if(typeSpinner.getSelectedItem().equals(“兔子”)){
breedSpinner.setAdapter(rabbitBreedAdapter);
}
}
未选择公共无效(AdapterView arg0){
}
});
}
}
工作Java代码:
public class Questionnaire extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.questionnaire);
String[] dogBreeds = {"Alsatian", "Border Collie","Labrador"};
String[] catBreeds = {"Bombay", "British Shorthair","Persian"};
String[] rabbitBreeds = {"Dutch", "English Lop","Flemish"};
String[] hamsterBreeds = {"Chinese", "Russian","Syrian"};
String[] birdBreeds = {"Parrot", "Parakeet","Cockatiel"};
Spinner typeSpinner = (Spinner) findViewById(R.id.which_spinner);
Spinner breedSpinner = (Spinner) findViewById(R.id.breed_spinner);
// ~~~ create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> typeAdapter = ArrayAdapter.createFromResource(this,
R.array.pet_type, android.R.layout.simple_spinner_item);
ArrayAdapter<CharSequence> dogBreedAdapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item, dogBreeds);
ArrayAdapter<CharSequence> catBreedAdapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item, catBreeds);
ArrayAdapter<CharSequence> rabbitBreedAdapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item, rabbitBreeds);
ArrayAdapter<CharSequence> hamsterBreedAdapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item, hamsterBreeds);
ArrayAdapter<CharSequence> birdBreedAdapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item, birdBreeds);
// ~~~ specify the layout to use when the list of choices appears
typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// ~~~ apply the adapter to the spinner
typeSpinner.setAdapter(typeAdapter);
typeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
switch (typeSpinner.getSelectedItem().toString()) {
case "Dog":
dogBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(dogBreedAdapter);
break;
case "Cat":
catBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(catBreedAdapter);
break;
case "Rabbit":
rabbitBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(rabbitBreedAdapter);
break;
case "Hamster":
hamsterBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(hamsterBreedAdapter);
break;
case "Bird":
birdBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(birdBreedAdapter);
break;
default:
breedSpinner.setEnabled(false);
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
公共课堂问卷调查活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.问卷);
String[]dogbrides={“阿尔萨斯”、“边境牧羊犬”、“拉布拉多犬”};
字符串[]猫品种={“孟买”,“英国短毛”,“波斯”};
字符串[]兔子品种={“荷兰语”、“英语罗布语”、“佛兰芒语”};
字符串[]仓鼠草={“中文”、“俄文”、“叙利亚文”};
字符串[]鸟苇={“鹦鹉”、“长尾鹦鹉”、“鹦鹉”};
微调器类型微调器=(微调器)findViewById(R.id.which\u微调器);
Spinner breedSpinner=(Spinner)findViewById(R.id.breed\U Spinner);
//~~~使用字符串数组和默认微调器布局创建ArrayAdapter
ArrayAdapter typeAdapter=ArrayAdapter.createFromResource(此,
R.array.pet_type,android.R.layout.simple_微调器_项);
ArrayAdapter dogBreedAdapter=新的ArrayAdapter(此,
android.R.layout.simple_微调器_项目,狗品种);
ArrayAdapter catBreedAdapter=新的ArrayAdapter(此,
android.R.layout.simple_spinner_项目,猫品种);
ArrayAdapter rabbitBreedAdapter=新的ArrayAdapter(此,
android.R.layout.simple_微调器_项目,兔子品种);
ArrayAdapter仓鼠BreedAdapter=新的ArrayAdapter(此,
android.R.layout.simple_spinner_项目,仓鼠草);
ArrayAdapter birdBreedAdapter=新的ArrayAdapter(此,
android.R.layout.simple_微调器_项目,鸟簧片);
//~~~指定显示选项列表时要使用的布局
typeAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
//~~~将适配器应用于微调器
typeSpinner.setAdapter(typeAdapter);
typeSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
酒吧
public class Questionnaire extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.questionnaire);
Spinner typeSpinner = (Spinner) findViewById(R.id.which_spinner);
Spinner breedSpinner = (Spinner) findViewById(R.id.breed_spinner);
// ~~~ create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> typeAdapter = ArrayAdapter.createFromResource(this,
R.array.pet_type, android.R.layout.simple_spinner_item);
ArrayAdapter<CharSequence> dogBreedAdapter = ArrayAdapter.createFromResource(this,
R.array.dog_breeds, android.R.layout.simple_spinner_item);
ArrayAdapter<CharSequence> catBreedAdapter = ArrayAdapter.createFromResource(this,
R.array.cat_breeds, android.R.layout.simple_spinner_item);
ArrayAdapter<CharSequence> rabbitBreedAdapter = ArrayAdapter.createFromResource(this,
R.array.rabbit_breeds, android.R.layout.simple_spinner_item);
ArrayAdapter<CharSequence> hamsterBreedAdapter = ArrayAdapter.createFromResource(this,
R.array.hamster_breeds, android.R.layout.simple_spinner_item);
ArrayAdapter<CharSequence> birdBreedAdapter = ArrayAdapter.createFromResource(this,
R.array.bird_breeds, android.R.layout.simple_spinner_item);
// ~~~ specify the layout to use when the list of choices appears
typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
dogBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
catBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
rabbitBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
hamsterBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
birdBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// ~~~ apply the adapter to the spinner
typeSpinner.setAdapter(typeAdapter);
// breedSpinner.setEnabled(true);
typeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
if(typeSpinner.getSelectedItem().equals("Dogs")) {
breedSpinner.setAdapter(dogBreedAdapter);
} else if(typeSpinner.getSelectedItem().equals("Cats")) {
breedSpinner.setAdapter(catBreedAdapter);
} else if(typeSpinner.getSelectedItem().equals("Rabbits")) {
breedSpinner.setAdapter(rabbitBreedAdapter);
}
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
}
public class Questionnaire extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.questionnaire);
String[] dogBreeds = {"Alsatian", "Border Collie","Labrador"};
String[] catBreeds = {"Bombay", "British Shorthair","Persian"};
String[] rabbitBreeds = {"Dutch", "English Lop","Flemish"};
String[] hamsterBreeds = {"Chinese", "Russian","Syrian"};
String[] birdBreeds = {"Parrot", "Parakeet","Cockatiel"};
Spinner typeSpinner = (Spinner) findViewById(R.id.which_spinner);
Spinner breedSpinner = (Spinner) findViewById(R.id.breed_spinner);
// ~~~ create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> typeAdapter = ArrayAdapter.createFromResource(this,
R.array.pet_type, android.R.layout.simple_spinner_item);
ArrayAdapter<CharSequence> dogBreedAdapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item, dogBreeds);
ArrayAdapter<CharSequence> catBreedAdapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item, catBreeds);
ArrayAdapter<CharSequence> rabbitBreedAdapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item, rabbitBreeds);
ArrayAdapter<CharSequence> hamsterBreedAdapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item, hamsterBreeds);
ArrayAdapter<CharSequence> birdBreedAdapter = new ArrayAdapter<CharSequence>(this,
android.R.layout.simple_spinner_item, birdBreeds);
// ~~~ specify the layout to use when the list of choices appears
typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// ~~~ apply the adapter to the spinner
typeSpinner.setAdapter(typeAdapter);
typeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
switch (typeSpinner.getSelectedItem().toString()) {
case "Dog":
dogBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(dogBreedAdapter);
break;
case "Cat":
catBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(catBreedAdapter);
break;
case "Rabbit":
rabbitBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(rabbitBreedAdapter);
break;
case "Hamster":
hamsterBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(hamsterBreedAdapter);
break;
case "Bird":
birdBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(birdBreedAdapter);
break;
default:
breedSpinner.setEnabled(false);
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
if(arg0.equals(spin0)){
spin1.setEnabled(true);
if(spin0.getSelectedItem().equals("India")){
ArrayAdapter<String> s1 = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,states_india);
s1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin1.setAdapter(s1);
}
else if(spin0.getSelectedItem().equals("Pakistan")) {
ArrayAdapter <String> s2 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_pak);
s2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin1.setAdapter(s2);
}
else if(spin0.getSelectedItem().equals("China")) {
ArrayAdapter <String> s3 = new ArrayAdapter <String> (this,android.R.layout.simple_spinner_item,states_china);
s3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin1.setAdapter(s3);
}
}
}
String[] typeList = {"Dogs", "Rabbits","Cats"};
final Spinner typeSpinner = (Spinner) findViewById(R.id.which_spinner);
final Spinner breedSpinner = (Spinner) findViewById(R.id.breed_spinner);
ArrayAdapter<String> typeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, typeList);
typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
typeSpinner.setAdapter(typeAdapter);
typeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
breedSpinner.setEnabled(true);
if (typeSpinner.getSelectedItem().toString().equals("Dogs"))
{
ArrayAdapter<CharSequence> dogBreedAdapter = ArrayAdapter.createFromResource(MainActivity.this,
R.array.dog_breeds, android.R.layout.simple_spinner_item);
dogBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(dogBreedAdapter);
} else if (typeSpinner.getSelectedItem().toString().equals("Cats"))
{
ArrayAdapter<CharSequence> catBreedAdapter = ArrayAdapter.createFromResource(MainActivity.this,
R.array.cat_breeds, android.R.layout.simple_spinner_item);
catBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(catBreedAdapter);
} else if (typeSpinner.getSelectedItem().equals("Rabbits"))
{
breedSpinner.setEnabled(false);
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
switch (typeSpinner.getSelectedItem().toString()) {
case "Dogs":
ArrayAdapter<CharSequence> dogBreedAdapter = ArrayAdapter.createFromResource(MainActivity.this,
R.array.dog_breeds, android.R.layout.simple_spinner_item);
dogBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(dogBreedAdapter);
break;
case "Cats":
ArrayAdapter<CharSequence> catBreedAdapter = ArrayAdapter.createFromResource(MainActivity.this,
R.array.cat_breeds, android.R.layout.simple_spinner_item);
catBreedAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
breedSpinner.setAdapter(catBreedAdapter);
break;
case "Rabbits":
breedSpinner.setEnabled(false);
break;
}