在 android 中从微调器获取值部分而不是文本部分

Get value part from spinner not text part in android

我有一个微调器,我将它绑定到对象列表,每个对象都包含文本和 ID part.Text 部分显示给用户,用户可以 select 微调器中的任何项目。现在我的问题是如何从微调器中获取价值部分。

我这样绑定微调器:

  Itm=new CItem( "-1", "Select Project" );
            lstItm.add(Itm);
            for(int i=0; i < array.length(); i++) {
                JSONObject tmpJson=array.getJSONObject(i);
                Itm=new CItem(tmpJson.getString("ID"),tmpJson.getString("Text"));
                lstItm.add(Itm);
      }
     ArrayAdapter<CItem> adapterProj = new ArrayAdapter<CItem>(myactivity, android.R.layout.simple_spinner_item, lstItm);
      drpProj.setAdapter(adapterProj);

我正试图获得这样的价值:

drpProj.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        CItem item=(CItem)parent.getItemAtPosition(position);
        String value=item.toString();// get value
        Log.d("Selected Item",value);
        etcal.setText(value);
    }
    @Override
    public void onNothingSelected(AdapterView<?> parent) {
    }

});

还有CItem class是这样的:

public class CItem {

private String ID = "";
private String Value = "";

public CItem () {
    ID = "";
    Value = "";
}

public CItem (String _ID, String _Value) {
    ID = _ID;
     Value = _Value;
}

@ Override
public String toString () {// Why should override toString ()? Because the adapter display data if the incoming adapter object is not a string of case, directly on the use of the object. ToString ()
        // TODO Auto-generated method stub
    return Value;
}

public String getId () {
    return ID;
}

public String getValue () {
    return Value;
}

}

但它 returns 文本部分不是值部分。所以我的问题是如何获得微调器的价值部分。

 itemSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
       @Override
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

           CItem item=(CItem)parent.getItemAtPosition(position);
           String value=item.getValue().toString();// get value

         }
       @Override
       public void onNothingSelected(AdapterView<?> parent) {
       }
   });

在你的onItemSelected(....)

在您的 onItemSelected 方法中,调用以下命令以在微调器的选定位置获取 CItem 对象。

 onItemSelected(AdapterView<?> parent, View view, int position, long id) 
     CItem item = (CItem) parent.getSelectedItem();
     String desiredValue = item.getValue();