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

Android: how get ID of an item selected in a 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

            }
        });

    }

如您所见,我有 "ready" id_promotion(这是我需要的真正价值)...而且我知道我不会(现在)在列表.

onItemSelected里面我怎样才能得到它?

非常感谢

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

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

另一种选择是创建一个自定义 ArrayAdapter 子类,它将接受 ModelPromotion 而不是 String 并将 getItemId 覆盖为 return idPromotion

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