[英]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.