我正在学习xamarin android。我陷入了一些奇怪的境地。
通常我想将我的android微调器与我从我的webapi中提取的json数据绑定。我写了这段代码。
var spinner = FindViewById<Spinner>(Resource.Id.RouteSelect);
string url = "http://localhost/api/android/pullroutes";
JsonValue json = await FetchWeatherAsync(url);
string temp = "";
for (int i = 0; i < json.Count; i++) {
//temp += json[i]["name"].ToString();
temp += json[i]["name"].ToString() ;
}
var items = new List<string>() { temp };
var adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerItem, items);
spinner.Adapter = adapter;
但是它显示了旋转器中的数据作为文本,但不像下拉样式。
我写错了什么?
答案 0 :(得分:3)
string temp = "";
ArrayList items = new ArrayList();
for (int i = 0; i < json.Count; i++) {
temp = json[i]["name"].ToString();
items.Add(temp);
}
var adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerItem, items);
spinner.Adapter = adapter;
你看到了区别吗?
您在temp
中有一个LONG字符串,因为您正在执行+=
。
每个String
必须作为项目添加到ArrayList
。你现在拥有的是List
一个项目,该项目包含一个长字符串。
注意:我提供了基于Java的答案。我知道这是Xamarin / C#,但你应该可以做类似的事。
答案 1 :(得分:0)
ArrayList items = new ArrayList();
和
var adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerItem, items);
从这两行发现错误。