Я недавно приступил к разработке форм Xamarin для своего школьного проекта, и у меня возникают проблемы с отображением представления списка с содержимым из базы данных. Строка JSON, которую я получаю от веб-службы, выглядит так:
[
{
"$id": "1",
"intArticleID": 11,
"strArticleTitle": "News 5 ",
"strArticlePhotoUrl": "doesItWork ",
"strArticleURL": "www.youtube.com "
},
{
"$id": "2",
"intArticleID": 10,
"strArticleTitle": "News 3 ",
"strArticlePhotoUrl": "www.google.com ",
"strArticleURL": "man "
},
{
"$id": "3",
"intArticleID": 9,
"strArticleTitle": "News 5 ",
"strArticlePhotoUrl": "www.mailroom.com ",
"strArticleURL": "www.youtube.com "
},
{
"$id": "4",
"intArticleID": 2,
"strArticleTitle": "News 2 ",
"strArticlePhotoUrl": "news.com ",
"strArticleURL": "news.com "
}
]
У меня есть класс, который я использую, чтобы установить строку сына в список объектов.
namespace MIApp.Classes
{
public class Articles
{
public partial class ArticlesItems{
[JsonProperty("$id")]
public long Id { get; set; }
[JsonProperty("intArticleID")]
public long intArticleId { get; set; }
[JsonProperty("strArticleTitle")]
string strArticleTitle { get; set; }
[JsonProperty("strArticlePhotoUrl")]
string strArticlePhotoUrl { get; set; }
[JsonProperty("strArticleURL")]
string strArticleURL { get; set; }
}
public partial class ArticlesItems{
public static List<ArticlesItems> FromJson(string json)
{
return JsonConvert.DeserializeObject<List<ArticlesItems>>(json);
}
}
}
}
Затем я вызываю функцию FromJson со строкой сына из моего кода здесь.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using MIApp.Classes;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace MIApp
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class HomePage : ContentPage
{
public HomePage ()
{
InitializeComponent ();
}
protected async override void OnAppearing()
{
base.OnAppearing();
HttpClient client = new HttpClient();
string url = "https://example.net/api/News_Articles/GetNews_Articles";
var response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
string res = "";
using (HttpContent content = response.Content)
{
Task<string> result = content.ReadAsStringAsync();
res = result.Result;
var ArticlesList = Articles.ArticlesItems.FromJson(res);
GetListView.ItemsSource = ArticlesList;
if (ArticlesList.Count > 0)
await DisplayAlert("List Item", ArticlesList["strArticleTitle"], "Ok");
}
}
else
{
await DisplayAlert("Connection Error", "Please Connect to the internet and try again", "Ok");
}
}
}
}
Затем он отображается на этой странице XAML здесь:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MIApp.HomePage">
<ContentPage.Content>
<StackLayout>
<Label Text="Welcome to Xamarin.Forms!"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
<ListView x:Name="GetListView">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding strArticleTitle}"/>
<TextCell Text="{Binding strArticleURL}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
</ContentPage>
Моя проблема заключается в том, что он отображает правильное количество записей в представлении списка, но значения в записях списка не отображаются. Пожалуйста, помогите, спасибо