Привязать счетчик Android к данным Http-ответа (json) в Xamarin

#c# #android #json #xamarin.android

#c# #Android #json #xamarin.android

Вопрос:

я изучаю xamarin android. Я застрял в чем-то странном.

Обычно я хотел привязать свой счетчик Android к своим данным json, которые я извлек из своего webapi. я написал этот блок кода.

  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

что-нибудь я написал неправильно?

Ответ №1:

 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 потому что вы делаете = .

Каждый String из них должен быть добавлен в ArrayList качестве элемента. То, что у вас есть прямо сейчас, — это List с одним элементом, и этот элемент содержит длинную строку.

Примечание: я даю ответ на основе Java. Я понимаю, что это Xamarin / C #, но вы должны быть в состоянии сделать подобное.

Комментарии:

1. @th3par3l Спасибо за ответ. ‘var items = new List<string>() { temp};’ я написал эту строку, чтобы добавить в список. Должен ли я снова добавлять их в другой массив? Пожалуйста, помогите мне четко понять 🙂

2. @KhaledMd. TuhidulHossain то, что вы добавляете, — это один элемент в список, потому temp что это только один элемент. Вы должны создать его новый экземпляр и добавить его в список в цикле for. Мой пример должен сработать. попробуйте

Ответ №2:

 ArrayList items = new ArrayList();
  

и

 var adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerItem, items);
  

обнаружена ошибка из этих 2 строк.