Android 微调器不在 MyOnItemSelectedListener 中显示所选项目的位置
Android Spinner doesn't show selected item position in MyOnItemSelectedListener
这些是我在我的应用程序中使用的 3 个微调器。 crustSP、sizeSP 和 extraDescriptionOneSP。功能性虎钳这 3 个微调器工作完美(加载项目并且可以 select 根据需要任何项目)但我的问题是在 crustSP 和 sizeSP 微调器它不显示 selected 项目位置在 MyOnItemSelectedListener
.它显示了 extraDescriptionOneSP 的 selected 项目位置。
谁能想出 crustSP 和 sizeSP 微调器的问题所在。我非常想要 selected 项目位置。
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 OnItemSelectedListener() {
public void onNothingSelected(AdapterView<?> arg0) {
}
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
String crustSelectedItem = crustSP.getSelectedItem()
.toString();
List<String> resultDescription = getFilteredDescriptions(
crustSelectedItem, description);
ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
ActivityPizzaCustomize.this,
android.R.layout.simple_spinner_item,
resultDescription);
dataAdapterDes
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sizeSP.setAdapter(dataAdapterDes);
sizeSP.setAdapter(new NothingSelectedSpinnerAdapter(
dataAdapterDes,
R.layout.contact_spinner_row_nothing_selected,
ActivityPizzaCustomize.this));
}
});
sizeSP.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onNothingSelected(AdapterView<?> arg0) {
return;
}
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
}
});
extraDescriptionOneSP
.setOnItemSelectedListener(new MyOnItemSelectedListener());
extraDescription = Utils
.removeDuplicatesFromList(extraDescription);
ArrayAdapter<String> dataAdapterExtraDesOne = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item,
extraDescription);
dataAdapterExtraDesOne
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
extraDescriptionOneSP.setAdapter(dataAdapterExtraDesOne);
extraDescriptionOneSP
.setAdapter(new NothingSelectedSpinnerAdapter(
dataAdapterExtraDesOne,
R.layout.contact_spinner_row_nothing_selected,
this));
我的 MyOnItemSelectedListener 代码,
public class MyOnItemSelectedListener implements OnItemSelectedListener {
@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:
System.out.println("crust = " + position);
break;
case R.id.sp_pizza_size:
System.out.println("size = " + position);
break;
case R.id.sp_extratoppingone:
System.out.println("extratoppingone = " + position);
break;
问题是,您还必须将相同的 MyOnItemSelectedListener 设置为 custSP 和 sizeSP。
extraDescriptionOneSP.setOnItemSelectedListener(new MyOnItemSelectedListener(ActivityPizzaCustomize.this));
custSP.setOnItemSelectedListener(new MyOnItemSelectedListener(ActivityPizzaCustomize.this));
sizeSP.setOnItemSelectedListener(new MyOnItemSelectedListener(ActivityPizzaCustomize.this));
为了保持您的逻辑,您应该对 MyOnItemSelectedListener 进行一些更改,并在每个选定的微调项上添加您想要执行的操作,如下所示:
public class MyOnItemSelectedListener implements OnItemSelectedListener
{
Activity activity;
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:
{
System.out.println("crust = " + position);
String crustSelectedItem = crustSP.getSelectedItem()
.toString();
List<String> resultDescription = getFilteredDescriptions(
crustSelectedItem, description);
ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
activity,
android.R.layout.simple_spinner_item,
resultDescription);
dataAdapterDes
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sizeSP.setAdapter(dataAdapterDes);
sizeSP.setAdapter(new NothingSelectedSpinnerAdapter(
dataAdapterDes,
R.layout.contact_spinner_row_nothing_selected,
activity));
}
break;
case R.id.sp_pizza_size:
System.out.println("size = " + position);
break;
case R.id.sp_extratoppingone:
System.out.println("extratoppingone = " + position);
break;
试试这个,这应该适合你
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> resultDescription = getFilteredDescriptions(
crustSelectedItem, description);
sizeSP
.setOnItemSelectedListener(new MyOnItemSelectedListener(ActivityPizzaCustomize.this));
ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
ActivityPizzaCustomize.this,
android.R.layout.simple_spinner_item,
resultDescription);
dataAdapterDes
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sizeSP.setAdapter(dataAdapterDes);
sizeSP.setAdapter(new NothingSelectedSpinnerAdapter(
dataAdapterDes,
R.layout.contact_spinner_row_nothing_selected,
ActivityPizzaCustomize.this));
}
});
这些是我在我的应用程序中使用的 3 个微调器。 crustSP、sizeSP 和 extraDescriptionOneSP。功能性虎钳这 3 个微调器工作完美(加载项目并且可以 select 根据需要任何项目)但我的问题是在 crustSP 和 sizeSP 微调器它不显示 selected 项目位置在 MyOnItemSelectedListener
.它显示了 extraDescriptionOneSP 的 selected 项目位置。
谁能想出 crustSP 和 sizeSP 微调器的问题所在。我非常想要 selected 项目位置。
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 OnItemSelectedListener() {
public void onNothingSelected(AdapterView<?> arg0) {
}
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
String crustSelectedItem = crustSP.getSelectedItem()
.toString();
List<String> resultDescription = getFilteredDescriptions(
crustSelectedItem, description);
ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
ActivityPizzaCustomize.this,
android.R.layout.simple_spinner_item,
resultDescription);
dataAdapterDes
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sizeSP.setAdapter(dataAdapterDes);
sizeSP.setAdapter(new NothingSelectedSpinnerAdapter(
dataAdapterDes,
R.layout.contact_spinner_row_nothing_selected,
ActivityPizzaCustomize.this));
}
});
sizeSP.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onNothingSelected(AdapterView<?> arg0) {
return;
}
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
}
});
extraDescriptionOneSP
.setOnItemSelectedListener(new MyOnItemSelectedListener());
extraDescription = Utils
.removeDuplicatesFromList(extraDescription);
ArrayAdapter<String> dataAdapterExtraDesOne = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item,
extraDescription);
dataAdapterExtraDesOne
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
extraDescriptionOneSP.setAdapter(dataAdapterExtraDesOne);
extraDescriptionOneSP
.setAdapter(new NothingSelectedSpinnerAdapter(
dataAdapterExtraDesOne,
R.layout.contact_spinner_row_nothing_selected,
this));
我的 MyOnItemSelectedListener 代码,
public class MyOnItemSelectedListener implements OnItemSelectedListener {
@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:
System.out.println("crust = " + position);
break;
case R.id.sp_pizza_size:
System.out.println("size = " + position);
break;
case R.id.sp_extratoppingone:
System.out.println("extratoppingone = " + position);
break;
问题是,您还必须将相同的 MyOnItemSelectedListener 设置为 custSP 和 sizeSP。
extraDescriptionOneSP.setOnItemSelectedListener(new MyOnItemSelectedListener(ActivityPizzaCustomize.this));
custSP.setOnItemSelectedListener(new MyOnItemSelectedListener(ActivityPizzaCustomize.this));
sizeSP.setOnItemSelectedListener(new MyOnItemSelectedListener(ActivityPizzaCustomize.this));
为了保持您的逻辑,您应该对 MyOnItemSelectedListener 进行一些更改,并在每个选定的微调项上添加您想要执行的操作,如下所示:
public class MyOnItemSelectedListener implements OnItemSelectedListener
{
Activity activity;
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:
{
System.out.println("crust = " + position);
String crustSelectedItem = crustSP.getSelectedItem()
.toString();
List<String> resultDescription = getFilteredDescriptions(
crustSelectedItem, description);
ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
activity,
android.R.layout.simple_spinner_item,
resultDescription);
dataAdapterDes
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sizeSP.setAdapter(dataAdapterDes);
sizeSP.setAdapter(new NothingSelectedSpinnerAdapter(
dataAdapterDes,
R.layout.contact_spinner_row_nothing_selected,
activity));
}
break;
case R.id.sp_pizza_size:
System.out.println("size = " + position);
break;
case R.id.sp_extratoppingone:
System.out.println("extratoppingone = " + position);
break;
试试这个,这应该适合你
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> resultDescription = getFilteredDescriptions(
crustSelectedItem, description);
sizeSP
.setOnItemSelectedListener(new MyOnItemSelectedListener(ActivityPizzaCustomize.this));
ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
ActivityPizzaCustomize.this,
android.R.layout.simple_spinner_item,
resultDescription);
dataAdapterDes
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sizeSP.setAdapter(dataAdapterDes);
sizeSP.setAdapter(new NothingSelectedSpinnerAdapter(
dataAdapterDes,
R.layout.contact_spinner_row_nothing_selected,
ActivityPizzaCustomize.this));
}
});