我在为微调框填充列表时遇到问题。
我从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);
}
有人可以进一步帮助我吗?
答案 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
,以便微调器可以使用新值进行更新。