简体   繁体   English

如何将项目添加到微调器?

[英]How to Add Items to Spinner?

This is what i am doing right now 这就是我现在正在做的

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


ArrayAdapter spinnerArrayAdapter = new ArrayAdapter (this, Android.Resource.Layout.SimpleSpinnerItem, new ProfileAddressTypes[] 
{ 

    for (var i = 0; i < AddressObject.Count; i++) 
    {
        new ProfileAddressTypes (AddressObject[i].id, AddressObject[i].name); 
    }
});

AddressTypeSpinner.Adapter = spinnerArrayAdapter;

This doe not work it says cant to put for inside the Array Adapter 这不起作用,它说不能放入阵列适配器内部

I have no idea on how to do this anyone have any ideas? 我不知道如何做到这一点,任何人都有任何想法吗?

try this: 尝试这个:

ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item,mArrayListspinner);
        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        AddressTypeSpinner.setAdapter(spinnerArrayAdapter);

here mArrayListspinner is your string array. 这里mArrayListspinner是您的字符串数组。

ProfileAddressTypes[] mList = new ProfileAddressTypes[size];

for (int i = 0; i < size; i++) {
   mList[i]= new ProfileAddressTypes (AddressObject[i].id, AddressObject[i].name);        
}

ArrayAdapter spinnerArrayAdapter = new ArrayAdapter (this, R.id_from_your_layout_of_that_activity_or_fragment, mList);  
yourSpinner.setAdapter(spinnerArrayAdapter ); 

Hope it helps :) 希望能帮助到你 :)

ArrayAdapter spinnerArrayAdapter = new ArrayAdapter (this, Android.Resource.Layout.SimpleSpinnerItem, GetAdapterData());

public ProfileAddressTypes[] GetAdapterData()
{
    var adapterData = new ProfileAddressTypes[AddressObject.Count];

    for (var i = 0; i < AddressObject.Count; i++) 
    {
        adapterData[i] = new ProfileAddressTypes (AddressObject[i].id, AddressObject[i].name); 
    }
    return adapterData;
}

Or using List<T> instead and calling ToArray() at the end: 或改用List<T>并最后调用ToArray()

 public ProfileAddressTypes[] GetAdapterData()
 {
      var adapterData = new List<ProfileAddressTypes>();

      for (var i = 0; i < AddressObject.Count; i++) 
      {
          adapterData.Add(new ProfileAddressTypes (AddressObject[i].id, AddressObject[i].name)); 
      }
      return adapterData.ToArray();
 }

You have to pass in ArrayAdapter constructor not array but object that implements interface IList , for example List<ProfileAddressTypes> , besides for correct output you should override method ToString() . 您必须传入ArrayAdapter构造函数,而不是数组,而是传入实现接口IList对象,例如List<ProfileAddressTypes> ,除了正确的输出之外,您还应该重写方法ToString()

Here's my code: 这是我的代码:

Spinner modelSelect = FindViewById<Spinner>(Resource.Id.modelSelect);
List<Marks> models = (from i in DBHelper.GetInstance().Table<Marks>() where i.removed == false orderby i.name ascending select i).ToList();
modelSelect.Adapter = new ArrayAdapter<Marks>(this, Android.Resource.Layout.SimpleSpinnerItem, models);

And a part of class Models : 和类Models的一部分:

public override string ToString()
{
    return name;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM