我有这个方法,并且它返回三个值,如下面的屏幕截图所示,
List<String> resultSizes = getFilteredSizes(crustSelectedItem);
我正在将这3个数据加载到android spinner,然后我使用这段代码来获取我选择的微调器值,
String StrSizeSPPosition = String.valueOf(sizeSP.getSelectedItemPosition());
它说0
。
然后我有一个字符串列表sizePrice
,
并返回以下显示的值,
我使用这段代码来获取所选项目的尊重值,
StrPriceSize = sizePrice.get(SizeSPPosition); // crashes here
PriceSize = Double.parseDouble(StrPriceSize);
System.out.println("PriceSize = " + PriceSize);
我的问题是当我选择pan large然后它应该将输出设置为1560因为我得到了索引位置,但是它给出了450.当我选择其他值时它会崩溃而给出异常。
这是例外,
这是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);
(我有另一种选择,当我选择它正常工作而不会崩溃时,它只有1个值,我想我只有在我有数据时才会遇到这个问题1) 我希望我的问题清楚明白。如果您需要更多详细信息,请询问清楚问题。任何帮助将不胜感激,以解决这个问题。
答案 0 :(得分:1)
而不是这行代码: -
String StrPriceSize = sizePrice.get(SizeSPPosition);
PriceSize = Double.parseDouble(StrPriceSize);
把这段代码: -
String StrPriceSize = resultSizes.get(SizeSPPosition);
PriceSize = Double.parseDouble(StrPriceSize);
或试试这个: -
尝试打印Log.d(&#34; sizePriceList&#34;,sizePrice +&#34;&#34;);在代码中并检查从微调器中选择项目时获得的元素数量。你的logcat显示indexoutofbound的异常,这意味着你只得到sizePrice中的一个项目