Заполнить счетчик списком

У меня проблема с заполнением счетчика списком.

Я скачал json по URL-ссылке и проанализировал его, чтобы поместить в список. Пока все хорошо ... Но теперь у меня есть список, и я не могу найти в Интернете ничего о заполнении счетчика списком. Список состоит из 4 столбцов: идентификатор, имя, возраст, пол и 28 строк. Теперь я хочу напечатать строки в счетчике с 4 столбцами, напечатанными с помощью - для разделения слов, например: «4 - Джон - 46 - Мужчина». Как я могу это сделать?

Вот часть кода, где я создаю список из URL-адреса:

Spinner CustomerSpinner = FindViewById<Spinner>(Resource.Id.CustomerSpinner);
//Startup WebClient
WebClient client = new WebClient();

//Define URL to download
string link = @"http://website.com/customers/getcustomers.php";

//Download json website content
string json = new WebClient().DownloadString(link);

//Parse json content
var jObject = JObject.Parse(json);

//Create Array from everything inside Node:"Customers"
var customerPropery = jObject["Customers"] as JArray;

//Create List to save Coin Data
customerList = new List<customer>();

//Find every value in Array: customerPropery 
foreach (var property in customerPropery )
{
    //Convert every value in Array to string
    var propertyList = JsonConvert.DeserializeObject<List<customer>>(property.ToString());

    //Add all strings to List
    customerList.AddRange(propertyList);
}

Может ли кто-нибудь помочь мне дальше?


person Vreesie    schedule 20.12.2018    source источник


Ответы (2)


Вы должны создать ArrayAdapter и прикрепить его к счетчику. Что-то вроде этого:

var adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem);
CustomerSpinner.Adapter = adapter;

foreach (var customer in customerList)
{
    adapter.Add(customer.ToString());  // format your string here
}

Пример (java): https://dzone.com/articles/populate-spinner-from-json-data

person mhu    schedule 20.12.2018
comment
Спасибо, я использовал ваш код, но с этим кодом возникла проблема. В foreach клиент имеет значение: GetJsonString.customer? - person Vreesie; 20.12.2018

«Список состоит из 4 столбцов: идентификатор, имя, возраст, пол и 28 строк».

List не может иметь 4 столбца, так что это сбивает с толку. List — это набор типов. Может случиться так, что ваш List имеет 28 элементов типа, который имеет 4 свойства: Id, Name, Age, Gender. Назовем этот тип Customer, что может выглядеть примерно так:

public class Customer
{
    public int Id {get; set;}
    public string Name {get; set;}
    public int Age {get; set;}
    public string Gender {get; set;}
}

Если вышесказанное верно, то у вас есть List<Customer> с 28 элементами Customer, назовем его CustomerList, и вам нужно будет сделать что-то вроде этого:

var adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerDropDownItem);
foreach (Customer customer in CustomerList)
{
    adapter.Add($"{customer.Id} - {customer.Name} - {customer.Age} - {customer.Gender}");
}
CustomerSpinner.Adapter = adapter;

Обратите внимание, что лучше всего назначать CustomerSpinner.Adapter = adapter; после добавления всех клиентов в адаптер. Если вы назначите CustomerSpinner.Adapter = adapter; до того, как добавите всех 28 клиентов в adapter, вам придется вызывать CustomerSpinner.Adapter.NotifyDataSetChanged(); после того, как вы добавите клиентов в adapter, чтобы счетчик мог быть обновлен новыми значениями.

person jgoldberger - MSFT    schedule 20.12.2018