【问题标题】:Display listview in listview from json从json的listview中显示listview
【发布时间】:2020-03-22 12:49:53
【问题描述】:

我有一个来自服务器的 JSON 显示在列表视图中,如下所示:

 {
    "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”列表。如何处理?

【问题讨论】:

  • 您的 JSON 似乎不是有效的 JSON。缺少右括号和多余的逗号。
  • @Hermanto 我已经修复了上面帖子中的 json
  • 你好像没有设置ItemsSource的ListView ListTryout
  • 我已经替换了ItemsSource = {Binding TryoutList},但仍然无法显示“tryout_terbaru”列表
  • 您能在HighlightTryoutList 课程中添加问题吗?

标签: c# arrays json listview uwp


【解决方案1】:

我假设您在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"&gt;

您也可以查看WPF nested ListView ItemsSource

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多