[英]How to deserialize JSON from a GET request and display it on a ListView in Xamarin
[英]Display listview in listview from json
我有一个来自服务器的JSON,可以在listview中显示,如下所示:
{
"data": {
"tryout_terbaru": {
"title": "Ada Soal tryout baru lho! Coba kerjain yuk!",
"list": [
{
"id": "1173",
"judul": "SD kelas 3 - Latihan Pembagian (9)"
}
],
"tipe": "Tryout"
}
}
我想在列表视图中显示“ tryout_terbaru”列表。
XAML:
<ListView
x:Name="highlightListview"
DataContext="{Binding SelectedItem, ElementName=itemListView}"
ItemsSource="{Binding Source={StaticResource itemsViewSource}}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<ListView
x:Name="ListTryout"
DataContext="{Binding SelectedItem, ElementName=itemListView}"
ItemsSource="{Binding TryoutList">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock
Margin="0,15,15,10"
Text="{Binding TJudul}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
码:
ObservableCollection<Highlight> highlightDatasource = new ObservableCollection<Highlight>();
ObservableCollection<TryoutList> tryoutDatasource = new ObservableCollection<TryoutList>();
JsonObject tryoutBObject = jsonData.ContainsKey("tryout_terbaru") && jsonData["tryout_terbaru"] != null ? jsonData["tryout_terbaru"].GetObject() : JsonObject.Parse("");
try
{
title = tryoutBObject["title"].GetString();
JsonArray JsonList = tryoutBObject["list"].GetArray();
foreach (JsonValue groupValue in JsonList)
{
JsonObject groupObject = groupValue.GetObject();
tryoutTitle = groupObject["judul"].GetString();
TryoutList list = new TryoutList();
list.TJudul = list;
tryoutDatasource.Add(list);
}
Highlight highlightTB = new Highlight();
highlightTB.Title = title;
highlightDatasource.Add(highlightTB);
highlightListview.ItemsSource = highlightDatasource;
}
我遇到了一个问题,即无法在列表视图中显示“ tryout_terbaru”列表。 如何处理?
我假设您在Highlight
具有TryoutList
,如下所示,如果没有,则必须添加此属性。
public class Highlight
{
public string Title { get; set; }
public ObservableCollection<TryoutList> TryoutList { get; set; }
public string Tipe { get; set; }
}
然后,您需要设置似乎错过的TryoutList
。
title = tryoutBObject["title"].GetString();
JsonArray JsonList = tryoutBObject["list"].GetArray();
foreach (JsonValue groupValue in JsonList)
{
JsonObject groupObject = groupValue.GetObject();
tryoutTitle = groupObject["judul"].GetString();
TryoutList list = new TryoutList();
list.TJudul = list;
tryoutDatasource.Add(list);
}
Highlight highlightTB = new Highlight();
highlightTB.Title = title;
highlightTB.TryoutList = tryoutDatasource;//You Missed this part
highlightDatasource.Add(highlightTB);
highlightListview.ItemsSource = highlightDatasource;
最后, TryoutList
必须由ItemsSource="{Binding TryoutList">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.