0

オンラインで関数のドキュメントを見つけることができませんでした。Googleはリモートでさえ有用なものを何も見つけませんでした。元のコードを見つけようとしましたが失敗しました:)(とにかくそれを理解できたとは思えません。)だから、この関数が実際に何をするのか誰もが知っています。返される「アイテムID」は何ですか?

GetItemAtPositionアイテムに含まれる文字列を返す場合GetItemIdAtPosition、「name」属性のコンテンツを返す可能性があると考えました。しかし、いつものように、それは期待通りではありません。

私はこれに基づいてスピナーを使用しました:

<string-array name="choices">
    <item>Choose action</item>
    <item name="3">Back to 3</item>
    <item name="2">Back to 2</item>
</string-array>

スピナーから選択肢が選択されたときに出力にトーストを使用する:

private void choice_callback (object sender, ItemEventArgs e) {
    Spinner spinner = (Spinner)sender;
    string toast = string.Format ("Chosen action: {0} at pos {1} ID {2}", 
        spinner.GetItemAtPosition (e.Position), 
        e.Position, 
        spinner.GetItemIdAtPosition(e.Position));
    Toast.MakeText (this, toast, ToastLength.Short).Show ();
}

「選択されたアクション:位置1ID1で3に戻る」などを出力します。言い換えれば、のリターンはそれ自体spinner.GetItemIdAtPosition(e.Position)と同じように見えe.Positionます。

補足:このアプリは、次のスピナーチュートリアルに基づいています:http://docs.xamarin.com/android/tutorials/User_Interface/spinner。ドロップダウンリスト内のアイテムが位置以外で識別できるかどうかを確認するために、上記のビットのみを採用しました。

4

1 に答える 1

0

GetItemId(int position)アダプタから返された値を返します。次に、その方法を示す例を示します。これは、http: //docs.xamarin.com/android/tutorials/User_Interface/spinnerチュートリアルに基づいています。

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);

    SetContentView(Resource.Layout.Main);

    Spinner spinner = FindViewById<Spinner>(Resource.Id.spinner);

    spinner.ItemSelected += SpinnerItemSelected;
    spinner.Adapter =
        new MyAdapter(this, Android.Resource.Layout.SimpleSpinnerItem,
            Resources.GetStringArray(Resource.Array.planets_array));
}

private void SpinnerItemSelected(object sender, ItemEventArgs e)
{
    Spinner spinner = (Spinner) sender;
    string toast = string.Format("The planet is {0}",
        spinner.GetItemIdAtPosition(e.Position));
    Toast.MakeText(this, toast, ToastLength.Long).Show();
}

public class MyAdapter : ArrayAdapter
{
    private int[] _newIds = new[] {9, 7, 5, 3, 1, 8, 6, 4, 2};

    public MyAdapter(Context context, int textViewResourceId, object[] objects)
        : base(context, textViewResourceId, objects)
    {
    }

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

アイテムを選択すると、アダプターから返された値が表示されます。この例では、各位置にランダムな値を使用しました。2 番目の項目を選択すると、_newIds配列の 2 番目の位置にある値が返されます7

于 2012-04-04T08:31:27.603 に答える