将数据加载到android spinner并在选择项目时崩溃

时间:2015-04-20 05:45:23

标签: android android-spinner

我有这个方法,并且它返回三个值,如下面的屏幕截图所示,

List<String> resultSizes = getFilteredSizes(crustSelectedItem);

enter image description here

我正在将这3个数据加载到android spinner,然后我使用这段代码来获取我选择的微调器值,

String StrSizeSPPosition = String.valueOf(sizeSP.getSelectedItemPosition()); 

它说0

然后我有一个字符串列表sizePrice, 并返回以下显示的值,

enter image description here

我使用这段代码来获取所选项目的尊重值,

StrPriceSize = sizePrice.get(SizeSPPosition); // crashes here
PriceSize = Double.parseDouble(StrPriceSize);
System.out.println("PriceSize = " + PriceSize);

我的问题是当我选择pan large然后它应该将输出设置为1560因为我得到了索引位置,但是它给出了450.当我选择其他值时它会崩溃而给出异常。

这是例外,

enter image description here

这是logcat输出

enter image description here

完整代码

                        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) 我希望我的问题清楚明白。如果您需要更多详细信息,请询问清楚问题。任何帮助将不胜感激,以解决这个问题。

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中的一个项目