用列表填充微调框

时间:2018-12-20 15:09:53

标签: c# list xamarin spinner

我在为微调框填充列表时遇到问题。

我从URL链接下载了json并进行了解析,因此可以将其放在列表中。到目前为止很好...但是现在我有了列表,并且在互联网上找不到关于使用列表填充微调框的任何信息。该列表有4列:ID,名称,年龄,性别和28行。现在,我想在微调器中打印行,并用-分隔4列,以分隔单词,例如:“ 4-John-46-Male”。我该怎么办?

这是我从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);
}

有人可以进一步帮助我吗?

2 个答案:

答案 0 :(得分:0)

您应该创建一个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

答案 1 :(得分:0)

  

“该列表有4列:ID,名称,年龄,性别和28行。”

List不能有4列,因此很混乱。 List是类型的集合。您的List可能具有28种类型的项目,这些项目具有4个属性:Id,姓名,年龄,性别。我们将此类型称为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;。如果您在将所有28个客户添加到CustomerSpinner.Adapter = adapter;之前分配了adapter,则必须在将客户添加到CustomerSpinner.Adapter.NotifyDataSetChanged();之后致电adapter,以便微调器可以使用新值进行更新。