在Xamarin中使用Http响应数据(json)绑定Android Spinner

时间:2016-10-10 17:51:12

标签: c# android json xamarin.android

我正在学习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;

但是它显示了旋转器中的数据作为文本,但不像下拉样式。

Android Spinner View

我写错了什么?

2 个答案:

答案 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);

从这两行发现错误。