Android:如何获取在微调器中选择的项目的ID?

时间:2016-02-18 16:26:47

标签: android spinner android-spinner

我有这个私有方法来渲染片段中的微调器:

private void renderSpinner() {

        List<String> spinnerArray =  new ArrayList<String>();

        for (int i = 0; i<mPromotionList.size(); i++) {

            ModelPromotion modelPromotion = (ModelPromotion) mPromotionList.get(i);
            String name_promotion = modelPromotion.getName();
            int id_promotion = modelPromotion.getIdPromotion();
            spinnerArray.add(name_promotion);
        }

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(mBaseApp, android.R.layout.simple_spinner_item, spinnerArray);

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        mSpinnerPromotion.setAdapter(adapter);

        mSpinnerPromotion.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent,
                                       View view, int pos, long id) {
                String name_promotion_selected = parent.getItemAtPosition(pos).toString();
                //TODO REMOVE
                Log.d(LOGTAG, "Il nome della promo selezionata è " + name_promotion_selected);
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });

    }

正如你所看到的,我已经准备好了#34; id_promotion(这是我需要的真正价值)......而且我知道我现在没有在列表中添加(现在)。

我如何在onItemSelected内获得它?

非常感谢

1 个答案:

答案 0 :(得分:1)

您可以使用所选项目的位置,并使用该位置从原始列表中获取ID。

((ModelPromotion) mPromotionList.get(pos)).getIdPromotion()

另一种选择是创建一个自定义ArrayAdapter子类,接受ModelPromotion而非String并覆盖getItemId以返回idPromotion

关于Github上的自定义ArrayAdapter的示例。