首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MaterialSpinner to ListView Android Xamarin C#

MaterialSpinner to ListView Android Xamarin C#
EN

Stack Overflow用户
提问于 2022-11-14 19:48:58
回答 1查看 60关注 0票数 0

我试图在每个listview上将旋转器中所选项的值传递给assignstaffButton.Click,但问题是我不知道获取值的正确语法并将其传递到列表视图中。我需要把它转换成字符串吗?我在旋转器中有一个员工姓名的数据库,所以我只需要把它传递给listview。谢谢。

我的碎片

代码语言:javascript
运行
复制
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 我对这个问题的安排。

代码语言:javascript
运行
复制
    </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.stack.imgur.com/ZU1eo.png)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-15 03:55:45

以下是MainActivity.cs中的代码

代码语言:javascript
运行
复制
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;
        }
       ...
    }
}

以下是命名空间:

代码语言:javascript
运行
复制
using Android.App;
using Android.OS;
using Android.Runtime;
using Android.Widget;
using AndroidX.AppCompat.App;
using System;
using System.Collections.Generic;

希望它能对你有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74437073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档