c # - Получить конкретное значение или положение выбранного элемента прядильщика - PullRequest
0 голосов
/ 21 декабря 2018

У меня проблема.

Я создал блесну с некоторыми покупателями.Спиннер был построен из списка, который имел 4 столбца: Id, Name, Age, Gender.В блесне я создал элементы, которые выглядели так:
Id: 1 - Имя: John - Возраст: 46 - Пол: Мужской
Id: 2 - Имя: Micheal - Возраст: 32 - Пол: Мужской

И т.д.

Теперь мне нужно получить идентификатор выбранного элемента, но я не могу его выяснить, потому что я создал собственную строку элемента.Поэтому, когда мне нужен ввод, я, конечно, получаю всю строку.Как я могу получить только идентификатор строки и отрезать: "Id: => - Имя: ... - Возраст: ... - Пол: ..." Так что единственное, чтослева находится идентификатор в виде Int ?

private void CustomerSpinner_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
{
    Spinner spinner = (Spinner)sender;
    SelectedSpinnerCustomer = spinner.GetItemAtPosition(e.Position).ToString();
    LoadCustomerInfo(SelectedSpinnerCustomer);
}

Так что, чтобы было ясно, я хочу, чтобы SelectedSpinnerCustomer был int.Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

В классе string есть несколько различных методов, которые вы можете использовать для этого.Вот тот, который немного упрощен и использует различные строковые методы.

//Save the string in a local variable with a short name for better readability
string str = spinner.GetItemAtPosition(e.Position).ToString();

//Split the string by the underscores ('-')
string[] splitted = str.Split("-");
//Now you have a string array with all the values by themselves
//We know that ID is the first element in the array since your string starts with the ID
//So save it in a new string
string idStr = splitted[0];
//idStr is now "id: x "
//Remove the spaces by replacing them with nothing
idStr = idStr.Replace(" ", "");
//idStr is now "id:x"
//To get only 'x' we need to remove "id:" which can be done in multiple ways
//In this example I will use String.Remove() method
//Start at index 0 and remove 3 characters. This will remove "id:" from "id:x"
idStr = idStr.Remove(0, 3);
//Now idStr is "x" which is an integer, so we can just parse it
int id = int.Parse(idStr);
//Now you have the id as an integer!
0 голосов
/ 21 декабря 2018

Лучший способ - создать пользовательский класс Spinner, который наследует класс обычного спиннера и содержит все четыре свойства

public class MySpinner : Spinner
{
   public int Id { get; set; }
   public int Age { get; set; }
   public string Name { get; set; }
   public string Gender { get; set; }
} 

Затем в событии

private void CustomerSpinner_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
{
    MySpinner spinner = sender as MySpinner;
    int SelectedSpinnerCustomer = spinner.Id;
    int age = spinner.Age;
    string name = spinner.Name;
    string gender = spinner.Gender;
}
...