#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;
Но он показывает мне данные в счетчике в виде текста, но не в раскрывающемся списке.
что-нибудь я написал неправильно?
Ответ №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 строк.