【问题标题】:SelectedItem of Spinner always nullSpinner 的 SelectedItem 始终为空
【发布时间】:2018-03-15 14:20:26
【问题描述】:

我为我的微调器控件创建了自定义数组适配器,但是当单击列表中的一个项目时,它没有被选中。这是我的代码:

public class CustomArrayAdapter : BaseAdapter
{
    readonly LayoutInflater inflater;
    List<string> items;

    public CustomArrayAdapter(Context context, List<string> items)
    {
        this.inflater = LayoutInflater.FromContext(context);
        this.items = items;
    }

    public override int Count
    {
        get { return items.Count; }
    }

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

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

    public override View GetView(int position, View convertView, ViewGroup parent)
    {
        var view = convertView ?? inflater.Inflate(Resource.Layout.SpinnerItem, parent, false);
        var item = items[position];
        view.FindViewById<TextView>(Resource.Id.spinnerItem).Text = item;
        return view;
    }
}

还有微调器布局:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/spinnerItem"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:textColor="@color/background_color"
android:textSize="25dp"
android:gravity="center_vertical"
android:textAlignment="center" />

这就是我使用适配器的方式:

CustomArrayAdapter adapter = new CustomArrayAdapter(this, spinnerItems.ToList());
spinnerLoginName.Adapter = adapter;

【问题讨论】:

    标签: android xamarin xamarin.android spinner


    【解决方案1】:

    您需要从GetItem 方法中的列表中返回值,而不是null as

    public override Object GetItem(int position)
        {
            return items.get(position);
        }
    

    【讨论】:

    • @bigb055 它已经存在于CustomArrayAdapter 中,只需更改其中的代码,尽管您应该使用泛型而不是原始值
    • 谢谢你救了我的命!!
    • 没什么大不了的,我很高兴能帮上忙,编码愉快
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 2017-07-31
    • 2019-07-18
    相关资源
    最近更新 更多