1

ユーザー名とユーザー ID を含むスピナーを作成しようとしています。ユーザーIDではなくユーザー名のみを表示したい。しかし、ユーザーが選択されたら、そのユーザーのユーザー ID を知りたいと思います。ユーザーIDに一意の識別子IDを使用しています。

助けていただければ幸いです、ありがとうございます。

編集:解決しました!スピナーと同じ順序でIDを持つ配列を保持するだけです

4

1 に答える 1

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();
    }
}
于 2012-08-24T07:09:00.607 に答える