2

ユーザーに表示される1つの値と、変更イベントで使用できる非表示のカスタム値があるasp.netのドロップダウンリストのように、スピナーを使用する方法が本当にわかりません。

asp.netのように、これを行うことができます:

string value = "somevalue";
dropdownlistID.Items.Add(new ListItem("text",value));

イベントでは、それを取得できますdropdownlistID.SelectedValue

誰かが私にこれを説明できるリンク、または他の提案を持っている場合は、助けてください! Android用のモノを使用して、vs2010でAndroidアプリを作成しています。

よろしく、マーカス

4

1 に答える 1

0

ListView を埋めるのと同じ方法で、ArrayAdapter を作成する必要があります。

 spinTime = FindViewById<Spinner>(Resource.Id.spinTimeChoose);
 List<string> spinnerItems = new List<string>();
 ArrayAdapter adapter  new ArrayAdapter<string> (this,Android.Resource.Layout.SimpleSpinnerItem,spinnerItems);

 adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
 spinTime.Adapter = adapter;
 spinTime.ItemSelected += (s, e) =>
 { 
  Log.Debug("SpinnerItems", spinnerItems[e.Position]);           
 }

それが役に立てば幸い

編集:私は今あなたの質問を受け取ったと思います:)以下は、クリアランスのリストのカスタムアダプターの例です。ハードコーディングされたドイツ語の文字列で申し訳ありません。重要な部分は getView メソッドです。新しいリストアイテムがユーザーのビューに入るたびに呼び出されます。新しいビューをインフレートするか、null でない場合は convertView を再利用してリストの値を入力する必要があります。

class ClearanceListAdapter : BaseAdapter
{
    private readonly List<Clearance> _clearances;
    private readonly Activity _context;

    public ClearanceListAdapter(List<Clearance> Clearances, Activity context)
    {
        _clearances = Clearances;
        _context = context;
    }

    public override int Count
    {
        get { return _clearances.Count(); }
    }

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

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

    public Clearance GetClearance (int position)
    {
        return _clearances.ElementAt(position);

    }

    public override Android.Views.View GetView(int position, Android.Views.View convertView, Android.Views.ViewGroup parent)
    {

        View view = (convertView ?? _context.LayoutInflater.Inflate(Resource.Layout.ClearanceListItem, parent, false));

        Clearance clearance = _clearances[position];


        view.FindViewById<TextView>(Resource.Id.txtClearanceDescription).Text = clearance.Description;
        view.FindViewById<TextView>(Resource.Id.txtStartDate).Text = clearance.Start.ToString("g");
        view.FindViewById<TextView>(Resource.Id.txtEndDate).Text = clearance.End.ToString("g");

        return view;
    }
}
于 2012-08-22T12:49:34.863 に答える