问题
I created custom array adapter for my spinner control but when clicking an item from the list it's not selected. Here my code:
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;
}
}
And the spinner layout:
<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" />
That's how I use the adapter:
CustomArrayAdapter adapter = new CustomArrayAdapter(this, spinnerItems.ToList());
spinnerLoginName.Adapter = adapter;
回答1:
You need to return the value from the list inside GetItem
method instead of null
as
public override Object GetItem(int position)
{
return items.get(position);
}
来源:https://stackoverflow.com/questions/49301920/selecteditem-of-spinner-always-null