我有这个私有方法来渲染片段中的微调器:
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
内获得它?
非常感谢
答案 0 :(得分:1)
您可以使用所选项目的位置,并使用该位置从原始列表中获取ID。
((ModelPromotion) mPromotionList.get(pos)).getIdPromotion()
另一种选择是创建一个自定义ArrayAdapter
子类,接受ModelPromotion
而非String
并覆盖getItemId
以返回idPromotion
关于Github上的自定义ArrayAdapter
的示例。