Android 微调器中的项目选择不为';在MyOnItemSelectedListener中检测不到
我有3个微调器的活动,第一个微调器的选择与第二个相关,第二个选择与第三个相关,所以我在一个微调器中有一个微调器代码。Android 微调器中的项目选择不为';在MyOnItemSelectedListener中检测不到,android,android-spinner,Android,Android Spinner,我有3个微调器的活动,第一个微调器的选择与第二个相关,第二个选择与第三个相关,所以我在一个微调器中有一个微调器代码。 crapsp、SizeSp和extracdescriptiononesp是我拥有的3个微调器。我已经将项目加载到微调器,并且我还可以选择一个值。但我的问题是,每当我在CRASTSP中进行选择时,SizeSp都不会显示在MyOnItemSelectedListener()。但如果我在ExtraDescriptionNesp中进行选择,它会显示在MyOnItemSelectedLis
crapsp、SizeSp和extracdescriptiononesp
是我拥有的3个微调器。我已经将项目加载到微调器,并且我还可以选择一个值。但我的问题是,每当我在CRASTSP中进行选择时,SizeSp都不会显示在MyOnItemSelectedListener()。
但如果我在ExtraDescriptionNesp
中进行选择,它会显示在MyOnItemSelectedListener()
中
我不知道我哪里出了错,任何人都可以指出我哪里出了错,这将非常有帮助
这就是代码
crust = Utils.removeDuplicatesFromList(crust);
ArrayAdapter<String> dataAdapterCru = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, crust);
dataAdapterCru
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
crustSP.setAdapter(dataAdapterCru);
crustSP.setOnItemSelectedListener(new MyOnItemSelectedListener(
ActivityPizzaCustomize.this) {
public void onNothingSelected(AdapterView<?> arg0) {
}
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
String crustSelectedItem = crustSP.getSelectedItem()
.toString();
List<String> resultSizes = getFilteredSizes(crustSelectedItem);
ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
ActivityPizzaCustomize.this,
android.R.layout.simple_spinner_item,
resultSizes);
dataAdapterDes
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sizeSP.setAdapter(dataAdapterDes);
sizeSP.setOnItemSelectedListener(new MyOnItemSelectedListener(
ActivityPizzaCustomize.this) {
public void onNothingSelected(AdapterView<?> arg0) {
}
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
String sizeSelectedItem = sizeSP
.getSelectedItem().toString();
List<String> resultTopping = getFilteredToppings(sizeSelectedItem);
extraDescriptionOneSP
.setOnItemSelectedListener(new MyOnItemSelectedListener(
ActivityPizzaCustomize.this));
ArrayAdapter<String> dataAdapterExtraDesOne = new ArrayAdapter<String>(
ActivityPizzaCustomize.this,
android.R.layout.simple_spinner_item,
resultTopping);
dataAdapterExtraDesOne
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
extraDescriptionOneSP
.setAdapter(dataAdapterExtraDesOne);
extraDescriptionOneSP
.setAdapter(new NothingSelectedSpinnerAdapter(
dataAdapterExtraDesOne,
R.layout.contact_spinner_row_nothing_selected,
ActivityPizzaCustomize.this));
}
});
}
});
我看不到您使用所选位置来确定下一个微调器的数据。顺便说一句,您不应该为每个选择创建新的适配器,而应该重用曾经创建的适配器。List resultSizes=getFilteredSizes(CRASTSelectedItem);该行执行过滤并返回所需内容。我有一个问题,为什么MyOnItemSelectedListener没有检测到Cristsp和SizeSpI的选择,我提到了在方法onItemSelected中获得的“位置”。在不使用“位置”值的情况下,您如何确定要使用哪些数据?请检查我更新的问题,此代码适用于第三喷丝器,但不适用于第一喷丝器和第二喷丝器。我不知道您为什么要使事情变得如此复杂。我认为问题在于,您正在重写onItemSelectedListener,而没有调用super方法。这是我的第一个android项目,非常困难。你介意帮我把这件事做好吗?
Activity activity;
String StrOneSPPosition;
public MyOnItemSelectedListener(Activity p_activity) {
activity = p_activity;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// check which spinner triggered the listener
switch (parent.getId()) {
case R.id.sp_crust: {
String StrCrustSPPosition = String.valueOf(crustSP
.getSelectedItemPosition());
System.out.println("crust = " + StrCrustSPPosition);
System.out.println("crust = " + position);
CrustSPPosition = Integer.parseInt(StrCrustSPPosition);
}