根据另一个微调器的选定项目更新微调器
updating spinner based on another spinner's selected item
这段代码有什么问题?
我有两个转盘。一个用于 'category',第二个用于 'subcategory'。当在类别微调器中选择一个项目时,我想相应地重新加载相关的子类别。
mSpnrCategory.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// SubCategories
String[] aSubCategory = new String[SUBCATS.length];
... Some code for preparing aSubCategory.
ArrayAdapter<String> dataAdapterSubCategories = new ArrayAdapter<String>(NewRequestActivity.this, android.R.layout.simple_spinner_item, aSubCategory);
dataAdapterSubCategories.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpnrSubCategory.setAdapter(dataAdapterSubCategories);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
当加载 activity 时调用此代码,它可以很好地加载第一个类别的子类别。但是,当我手动更改类别时,会调用此代码,但会导致子类别的微调器为空。我不知道为什么。有什么想法吗?
将您的子类别适配器 (mSpnrSubCategory
) 定义为全局变量。
然后每当类别微调器单击时,更改子类别的数据然后 notifyDataSetChanged();
ArrayAdapter<String> mSpnrSubCategory;
ArrayList<String> aSubCategory;
mSpnrCategory.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// SubCategories
...
mSpnrSubCategory.notifyDataSetChanged();
}
});
我建议使用ArrayList<String> instead of String[]
希望这有帮助
这段代码有什么问题?
我有两个转盘。一个用于 'category',第二个用于 'subcategory'。当在类别微调器中选择一个项目时,我想相应地重新加载相关的子类别。
mSpnrCategory.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// SubCategories
String[] aSubCategory = new String[SUBCATS.length];
... Some code for preparing aSubCategory.
ArrayAdapter<String> dataAdapterSubCategories = new ArrayAdapter<String>(NewRequestActivity.this, android.R.layout.simple_spinner_item, aSubCategory);
dataAdapterSubCategories.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpnrSubCategory.setAdapter(dataAdapterSubCategories);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
当加载 activity 时调用此代码,它可以很好地加载第一个类别的子类别。但是,当我手动更改类别时,会调用此代码,但会导致子类别的微调器为空。我不知道为什么。有什么想法吗?
将您的子类别适配器 (mSpnrSubCategory
) 定义为全局变量。
然后每当类别微调器单击时,更改子类别的数据然后 notifyDataSetChanged();
ArrayAdapter<String> mSpnrSubCategory;
ArrayList<String> aSubCategory;
mSpnrCategory.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// SubCategories
...
mSpnrSubCategory.notifyDataSetChanged();
}
});
我建议使用ArrayList<String> instead of String[]
希望这有帮助