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
的示例。
我有这个私有方法来在片段中渲染微调器:
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
的示例。