I am trying to pass the value of the selected item in the Spinner to ListView on every assignstaffButton.Click, but the problem is I don't know the proper syntax for getting the value and pass it on listview. Do I need to convert it to string? I have a database for the staffnames in the spinner so I just need to pass it to listview. Thank you.
my Fragment
using AdamsonsEDApp.Adapters;
using AdamsonsEDApp.Data_Models;
using AdamsonsEDApp.Helpers;
using AdamsonsEDApp.Listeners;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
using Firebase.Annotations;
using Firebase.Database;
using FR.Ganfra.Materialspinner;
using Java.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SupportV7 = Android.Support.V7.App;
namespace AdamsonsEDApp.Fragments
{
public class AssigningStaffFragment : Android.Support.V4.App.DialogFragment
{
MaterialSpinner assignstaffnameSpinner;
Button assignstaffButton, assignstaffregisterButton, assignstaffremoveButton, assignstaffclearButton;
ImageView exitFragmentButton;
ListView assignstaffListView;
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your fragment here
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.Inflate(Resource.Layout.newassignstaff, container, false);
this.Dialog.SetCanceledOnTouchOutside(false);
assignstaffnameSpinner = (MaterialSpinner)view.FindViewById(Resource.Id.assignstaffnameSpinner);
assignstaffButton = (Button)view.FindViewById(Resource.Id.assignstaffButton);
assignstaffListView = (ListView)view.FindViewById(Resource.Id.assignstaffListView);
exitFragmentButton = (ImageView)view.FindViewById(Resource.Id.exitfragmentButton);
assignstaffremoveButton = (Button)view.FindViewById(Resource.Id.assignstaffremoveButton);
assignstaffclearButton = (Button)view.FindViewById(Resource.Id.assignstaffclearButton);
assignstaffregisterButton = (Button)view.FindViewById(Resource.Id.assignstaffregisterButton);
assignstaffListView.ItemClick += AssignstaffListView_ItemClick;
assignstaffregisterButton.Click += AssignstaffregisterButton_Click;
assignstaffButton.Click += AssignstaffButton_Click;
assignstaffremoveButton.Click += AssignstaffremoveButton_Click;
assignstaffclearButton.Click += AssignstaffclearButton_Click;
exitFragmentButton.Click += ExitFragmentButton_Click;
RetrieveStaffNameData();
return view;
}
private void AssignstaffclearButton_Click(object sender, EventArgs e)
{
assignstaffListView.clear();
}
private void AssignstaffremoveButton_Click(object sender, EventArgs e)
{
//remove selected item
}
private void AssignstaffListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
//select item
}
//add spinner value to listview
private void AssignstaffButton_Click(object sender, EventArgs e)
{
MaterialSpinner assignstaffspinner = (MaterialSpinner)sender;
assignstaffListView.Add(assignstaffnameSpinner.GetItemAtPosition(e.Position).ToString());
if (staffnameadapter != null)
{
staffnameadapter.Dispose();
}
staffnameadapter = new ArrayAdapter<string>(this.Activity, Android.Resource.Layout.SimpleListItem1, assignstaffListView);
FindViewById(Resource.Id.assignstaffListView).Adapter = staffnameadapter;
}
private void ExitFragmentButton_Click(object sender, EventArgs e)
{
this.Dismiss();
}
public void SetupStaffNameSpinner()
{
staffnameList = new List<string>();
foreach (var staffname in stafffullnameList)
{
staffnameList.Add(staffname.staffFullName);
}
staffnameadapter = new ArrayAdapter<string>(Activity, Android.Resource.Layout.SimpleSpinnerDropDownItem, staffnameList);
staffnameadapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
assignstaffnameSpinner.Adapter = staffnameadapter;
assignstaffnameSpinner.ItemSelected += AssignstaffnameSpinner_ItemSelected;
}
private void AssignstaffnameSpinner_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
{
staffname = staffnameList[e.Position];
}
public void RetrieveStaffNameData()
{
staffListeners = new StaffListeners();
staffListeners.Create();
staffListeners.StaffRetrieved += StaffListeners_StaffRetrieved;
}
private void StaffListeners_StaffRetrieved(object sender, StaffListeners.StaffDataEventArgs e)
{
stafffullnameList = e.Staffs;
SetupStaffNameSpinner();
}
}
}
newassignstaff.xml My Layout for the problem.
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#e2e2e2"/>
<LinearLayout
android:padding="16dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fr.ganfra.materialspinner.MaterialSpinner
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:id="@+id/assignstaffnameSpinner"
app:ms_enableFloatingLabel="true"
app:ms_floatingLabelText="Select Event"
app:ms_hint="Select Event"
app:ms_alignLabels="true"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/assignstaffButton"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:text="ASSIGN"
android:layout_weight="1"
android:background="?android:attr/colorPrimary"
android:textColor="#fff"
android:layout_margin="10px"
android:layout_marginTop="20dp"/>
<Button
android:id="@+id/assignstaffremoveButton"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:text="REMOVE"
android:layout_weight="1"
android:background="?android:attr/colorPrimary"
android:textColor="#fff"
android:layout_margin="10px"
android:layout_marginTop="20dp"/>
<Button
android:id="@+id/assignstaffclearButton"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:text="CLEAR"
android:layout_weight="1"
android:background="?android:attr/colorPrimary"
android:textColor="#fff"
android:layout_margin="10px"
android:layout_marginTop="20dp"/>
</LinearLayout>
<ListView
android:id="@+id/assignstaffListView"
android:hint="Staff Names"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_marginTop="20dp"
android:textSize="18sp"
android:background="#edede0"
android:textColor="#000"/>
<Button
android:id="@+id/assignstaffregisterButton"
android:layout_width="300dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:text="REGISTER DETAILS"
android:background="?android:attr/colorPrimary"
android:textColor="#fff"
android:layout_marginTop="20dp"/>
</LinearLayout>
</LinearLayout>
[MaterialSpinner value "Name Test" pass to Listview every assign button clicked](https://i.sstatic.net/ZU1eo.png)
Here is the code in MainActivity.cs
:
namespace App3_android
{
...
public class MainActivity : AppCompatActivity
{
public List<string> ListView_list = new List<string>();
public ArrayAdapter listAdapter;
protected override void OnCreate(Bundle savedInstanceState)
{
var Spinner_list = new List<string>();
Spinner_list.Add("Baboon");
Spinner_list.Add("Capuchin Monkey");
Spinner_list.Add("Blue Monkey");
Spinner_list.Add("Squirrel Monkey");
Spinner_list.Add("Golden Lion Tamarin");
Spinner_list.Add("Howler Monkey");
Spinner_list.Add("Japanese Macaque");
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
SetContentView(Resource.Layout.activity_main);
Spinner spinner = FindViewById<Spinner>(Resource.Id.spinner);
ListView listView = FindViewById<ListView>(Resource.Id.ListView);
spinner.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs>(spinner_ItemSelected);
var adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem, Spinner_list); adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
spinner.Adapter = adapter;
}
private void spinner_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
{
Spinner spinner = (Spinner)sender;
ListView_list.Add(spinner.GetItemAtPosition(e.Position).ToString());
if (listAdapter != null)
{
listAdapter.Dispose();
}
listAdapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, ListView_list);
FindViewById<ListView>(Resource.Id.ListView).Adapter=listAdapter;
}
...
}
}
Here is the namespace:
using Android.App;
using Android.OS;
using Android.Runtime;
using Android.Widget;
using AndroidX.AppCompat.App;
using System;
using System.Collections.Generic;
Wish it could be helpful to you.