2012-08-22 19 views
1

我試圖創建一個包含用戶名和用戶標識的微調器。我只想顯示用戶名而不是用戶ID。但是,當用戶被選中時,我想知道該用戶的userID是什麼。我使用用戶標識符的唯一標識符ID。包含用戶名和用戶標識的微調器,只有用戶名可見

幫助將不勝感激,謝謝。

編輯:解決!我只是保持與ID的數組用相同的順序微調

+0

投票重新開啓,因爲這是MonoDroid的/ XA marin.android而不是java。雖然這個過程可能非常相似,但不是*相同。 –

回答

2

您可以自定義適配器爲您的微調:

public class CustomSpinnerAdapter : BaseAdapter 
{ 
    readonly Activity _context; 
    private List<Users> _items; 
    public ComboBoxAdapter(Activity context, List<Users> listOfItems) 
    { 
     _context = context; 
     _items = listOfItems; 
    } 

    public override int Count 
    { 
     get { return _items.Count; } 
    } 

    public override Java.Lang.Object GetItem(int position) 
    { 
     return position; 
    } 

    public override long GetItemId(int position) 
    { 
     return position; 
    } 

    public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     var item = _items[position]; 
     var view = (convertView ?? context.LayoutInflater.Inflate(Android.Resource.Layout.SimpleSpinnerDropDownItem, 
      parent, 
      false)); 
     var name = view.FindViewById<TextView>(Android.Resource.Id.Text1); 
     name.Text = item.Name; 
     return view; 
    } 

    public Users GetItemAtPosition(int position) 
    { 
     return _items[position]; 
    } 
} 

而且你需要包含用戶信息類:

public class Users 
{ 
    int Id{get;set;} 
    string Name{get;set;} 
} 

然後,您可以創建並使用數據填充您的微調:

[Activity(Label = "Spinner Activity")] 
public class SpinnerActivity : Activity 
{ 
    private List<Users> _users; 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     SetContentView(Resource.Layout.LayoutWithSpinner); 
     var spinner = FindViewById<Spinner>(Resource.Id.spinner); 
     //you need to add data to _users before creating adapter 
     var adapter = new CustomSpinnerAdapter(this,_users); 
     spinner.Adapter = adapter; 
     spinner.ItemSelected += SpinnerItemSelected; 
    } 

    private void SpinnerItemSelected(object sender, AdapterView.ItemSelectedEventArgs e) 
    { 
     Toast.MakeText(this, "Id:"+_users[e.Position].Id +" Name"+_users[e.Position].Name, ToastLength.Long).Show(); 
    } 
}