将数据加载到 android 微调器并在选择项目时崩溃
Loading the data to android spinner and it crashes when selecting an item
我有这个方法,它 returns 三个值,如下面的屏幕截图所示,
List<String> resultSizes = getFilteredSizes(crustSelectedItem);
然后我将这 3 个数据加载到 android 微调器,然后我使用这段代码来获取微调器值 selected,
String StrSizeSPPosition = String.valueOf(sizeSP.getSelectedItemPosition());
它说 0
。
然后我有一个字符串列表 sizePrice
,
它 returns 下面显示的值,
我正在使用这段代码来获取 selected 项目的尊重价值,
StrPriceSize = sizePrice.get(SizeSPPosition); // crashes here
PriceSize = Double.parseDouble(StrPriceSize);
System.out.println("PriceSize = " + PriceSize);
我的问题是,当我 select 平移大时,它应该给出 1560 的输出,因为我正在获取索引位置,但它给出了 450。当我 select 其他值时它崩溃并给出异常。
这是例外,
这是logcat输出
完整代码
List<String> resultSizes = getFilteredSizes(crustSelectedItem);
ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
Activity.this,
android.R.layout.simple_spinner_item,
resultSizes);
dataAdapterDes
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sizeSP.setAdapter(dataAdapterDes);
sizeSP.setOnItemSelectedListener(new MyOnItemSelectedListener(
Activity.this) {
public void onNothingSelected(AdapterView<?> arg0) {
}
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
String sizeSelectedItem = sizeSP
.getSelectedItem().toString();
String StrSizeSPPosition = String
.valueOf(sizeSP
.getSelectedItemPosition());
System.out.println("sizeSelectedItem = "
+ sizeSelectedItem);
System.out.println("StrSizeSPPosition = "
+ StrSizeSPPosition);
SizeSPPosition = Integer
.parseInt(StrSizeSPPosition);
String StrPriceSize = sizePrice
.get(SizeSPPosition);
PriceSize = Double.parseDouble(StrPriceSize);
(我有另一个选项,当我 select 时它只有 1 个值,它可以正常工作而不会崩溃,我想我只有在我有数据 mora 时才会遇到这个问题 1)
我希望我的问题足够清楚,可以理解。如果您需要更多详细信息,请询问以明确问题。如果您能帮助解决这个问题,我们将不胜感激。
代替这行代码:-
String StrPriceSize = sizePrice.get(SizeSPPosition);
PriceSize = Double.parseDouble(StrPriceSize);
输入此代码:-
String StrPriceSize = resultSizes.get(SizeSPPosition);
PriceSize = Double.parseDouble(StrPriceSize);
或者试试这个:-
尝试打印 Log.d("sizePriceList", sizePrice+"");在代码中检查从微调器中选择项目时获得的元素数量。您的 logcat 显示 indexoutofbound 的异常,这意味着您只能获得 sizePrice
中的一项
我有这个方法,它 returns 三个值,如下面的屏幕截图所示,
List<String> resultSizes = getFilteredSizes(crustSelectedItem);
然后我将这 3 个数据加载到 android 微调器,然后我使用这段代码来获取微调器值 selected,
String StrSizeSPPosition = String.valueOf(sizeSP.getSelectedItemPosition());
它说 0
。
然后我有一个字符串列表 sizePrice
,
它 returns 下面显示的值,
我正在使用这段代码来获取 selected 项目的尊重价值,
StrPriceSize = sizePrice.get(SizeSPPosition); // crashes here
PriceSize = Double.parseDouble(StrPriceSize);
System.out.println("PriceSize = " + PriceSize);
我的问题是,当我 select 平移大时,它应该给出 1560 的输出,因为我正在获取索引位置,但它给出了 450。当我 select 其他值时它崩溃并给出异常。
这是例外,
这是logcat输出
完整代码
List<String> resultSizes = getFilteredSizes(crustSelectedItem);
ArrayAdapter<String> dataAdapterDes = new ArrayAdapter<String>(
Activity.this,
android.R.layout.simple_spinner_item,
resultSizes);
dataAdapterDes
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sizeSP.setAdapter(dataAdapterDes);
sizeSP.setOnItemSelectedListener(new MyOnItemSelectedListener(
Activity.this) {
public void onNothingSelected(AdapterView<?> arg0) {
}
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
String sizeSelectedItem = sizeSP
.getSelectedItem().toString();
String StrSizeSPPosition = String
.valueOf(sizeSP
.getSelectedItemPosition());
System.out.println("sizeSelectedItem = "
+ sizeSelectedItem);
System.out.println("StrSizeSPPosition = "
+ StrSizeSPPosition);
SizeSPPosition = Integer
.parseInt(StrSizeSPPosition);
String StrPriceSize = sizePrice
.get(SizeSPPosition);
PriceSize = Double.parseDouble(StrPriceSize);
(我有另一个选项,当我 select 时它只有 1 个值,它可以正常工作而不会崩溃,我想我只有在我有数据 mora 时才会遇到这个问题 1) 我希望我的问题足够清楚,可以理解。如果您需要更多详细信息,请询问以明确问题。如果您能帮助解决这个问题,我们将不胜感激。
代替这行代码:-
String StrPriceSize = sizePrice.get(SizeSPPosition);
PriceSize = Double.parseDouble(StrPriceSize);
输入此代码:-
String StrPriceSize = resultSizes.get(SizeSPPosition);
PriceSize = Double.parseDouble(StrPriceSize);
或者试试这个:-
尝试打印 Log.d("sizePriceList", sizePrice+"");在代码中检查从微调器中选择项目时获得的元素数量。您的 logcat 显示 indexoutofbound 的异常,这意味着您只能获得 sizePrice
中的一项