Добрый день, проблема в том что не получается получить данные из listview, которые я получаю при парсинге, а именно координаты longitude и latitude и последующая передача их в другу активность в виде координат для точки, которая будет отображаться на карте. Алгоритм я представляю примерно такой:По этой позиции я должен из своего списка (который я передаешь в адаптер), получать объект (монумент) и уже из этого объекта доставать координаты или что-то еще.
Прошу помощи.
Код класса и представление данных
public class items
{
[JsonProperty("response")]
public List<categories> item { get; set; }
}
//Класс для листа item
public class categories
{
[JsonProperty("id")]
public int id { get; set; }
[JsonProperty("name")]
public string name { get; set; }
[JsonProperty("shortDesc")]
public string shortDesc { get; set; }
[JsonProperty("longDesc")]
public string longDesc { get; set; }
[JsonProperty("longitude")]
public double? longitude { get; set; }
[JsonProperty("latitude")]
public double? latitude { get; set; }
[JsonProperty("likes")]
public int likes { get; set; }
}
//Адаптер для вывода нужной информации
public class HomeScreenAdapter : BaseAdapter<categories>
{
List<categories> categories = new List<categories>();
Activity context;
public HomeScreenAdapter(Activity context, List<categories> categories)
: base()
{
this.context = context;
this.categories = categories;
}
public override long GetItemId(int position)
{
return position;
}
public override categories this[int position]
{
get { return categories[position]; }
}
public override int Count
{
get { return categories.Count; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = categories[position];
View view = convertView;
if (view == null) // no view to re-use, create new
view = context.LayoutInflater.Inflate(Resource.Layout.MonumentView, null);
//view.FindViewById<TextView>(Resource.Id.Text1).Text = item.id.ToString();
view.FindViewById<TextView>(Resource.Id.Text2).Text = item.name;
view.FindViewById<TextView>(Resource.Id.Text3).Text = item.shortDesc;
//view.FindViewById<TextView>(Resource.Id.Text4).Text = item.longitude.ToString();
//view.FindViewById<TextView>(Resource.Id.Text5).Text = item.latitude.ToString();
//view.FindViewById<ImageView>(Resource.Id.Image).SetImageResource(item.ImageResourceId);
return view;
}
}
Сам момент клика и получения данных
JsonValue json = await GetCategories(url);
var r = json.ToString(); // конвертация в строку
Console.WriteLine(r); //вывод в консоль результата
var ready = JsonConvert.DeserializeObject<List<categories>>(r); //десериализация объекта с использованием класса
Console.WriteLine("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
Console.WriteLine("item {0}, Всего {1}", ready.Count, ready);
lv2 = FindViewById<ListView>(Resource.Id.List1); //
lv2.Adapter = new HomeScreenAdapter(this, ready); //вывод готовой информации
//Метод по клику на listview
lv2.ItemClick += (object sender, AdapterView.ItemClickEventArgs e) =>
{
Console.WriteLine("!!!"+ e.Position );
Console.WriteLine("!!!!" + e.Position + "!!!!");
};
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости