第二个微调器取决于第一个微调器(Xamarin VS)

Second spinner depends from first spinner (Xamarin VS)

我发现了很多类似的问题,我在 Java 中看到了很多类似的问题,问题是我不知道如何将 Java 代码转换为 C# Xamarin。

这是我找到的代码:from here

   month.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int pos, long id) {
            // TODO Auto-generated method stub
            List<String> s = Arrays.asList(getResources().getStringArray(R.array.item_day));
            if (pos == 0 || pos == 2 || pos == 4 || pos == 8 || pos == 9
                    || pos == 11) {
                ArrayAdapter<String> dayadapter = new  ArrayAdapter<String>(Latlondemo.this, android.R.layout.simple_spinner_item,s);
                day.setAdapter(dayadapter);
            } else if (pos == 1) {
                s = s.subList(0,28);                    
                ArrayAdapter<String> dayadapter = new  ArrayAdapter<String>(Latlondemo.this, android.R.layout.simple_spinner_item,s);
                day.setAdapter(dayadapter);
            } else {
                s = s.subList(0,30);                    
                ArrayAdapter<String> dayadapter = new  ArrayAdapter<String>(Latlondemo.this, android.R.layout.simple_spinner_item,s);
                day.setAdapter(dayadapter);
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });

我特别指的是这一行:

List<String> s = Arrays.asList(getResources().getStringArray(R.array.item_day));

它的 C# 对应物是什么?

到目前为止,这是我的代码:

        spinner1 = FindViewById<Spinner>(Resource.Id.spinner1);
        spinner2 = FindViewById<Spinner>(Resource.Id.spinner2);

        var adapter1 = ArrayAdapter.CreateFromResource(
                this, Resource.Array.building_array, Android.Resource.Layout.SimpleSpinnerItem);
        var adapter2 = ArrayAdapter.CreateFromResource(
                this, Resource.Array.level_array, Android.Resource.Layout.SimpleSpinnerItem);

        adapter1.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
        adapter2.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
        spinner1.Adapter = adapter1;
        spinner2.Adapter = adapter2;
        spinner1.ItemClick += (sender, e) => {

        // code here

        };

字符串资源:

<resources>
  <string-array name="building_array">
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
  </string-array>
  <string-array name="level_array">
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
  </string-array>
</resources>

对应的 C# 是

var arr = Resources.GetStringArray(Resource.Array.building_array);

这在 Android 上下文中有效,例如你的 Activity,因为 Resources 是它的 属性。

如果您希望它成为 List<sting>,只需在调用中附加一个 .ToList()(需要:using System.Linq;)。