gpt4 book ai didi

json - 使用 Rest Api 的 Xamarin 中的 ListView

转载 作者:行者123 更新时间:2023-12-02 03:28:11 26 4
gpt4 key购买 nike

我能够解决这个错误。我想显示大量API数据的ListView

例如 API 包含此类数据:

[{"id":"666","employee_name":"xyz","employee_salary":"123","employee_age":"23","profile_image":""}]

错误屏幕截图: screenshot of error

我将 JSON 转换为 c# 后制作的 Class.cs

 public class employees
{

public string id { get; set; }
public string employee_name { get; set; }
public string employee_salary { get; set; }
public string employee_age { get; set; }
public string profile_image { get; set; }

}

这是 XAML.cs 文件,其中 LoadData() 用于调用 API

public async void LoadData()
{
var content = "";
HttpClient client = new HttpClient();
var RestURL = "MY API";
client.BaseAddress = new Uri(RestURL);
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync(RestURL);
content = await response.Content.ReadAsStringAsync();
var Items = JsonConvert.DeserializeObject<List<employees>>(content);
ListView1.ItemsSource = Items;
}

这是Xamarin.Forms的XAML文件:

<StackLayout BackgroundColor="White">
<ListView x:Name="ListView1" RowHeight="60">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Vertical" Padding="8,0,8,0">
<Label Text="{Binding id}" TextColor="#000" FontSize="14" LineBreakMode="TailTruncation" />
<Label Text="{Binding employee_name}" TextColor="#000" LineBreakMode="TailTruncation" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>

最佳答案

首先需要创建一个本地模型类:

public class TodoItem
{
public string id { get; set; }

public string employee_name { get; set; }

public string employee_salary{ get; set; }

public bool employee_age { get; set; }

public bool profile_image { get; set; }
}

并且在RestService中可以使用TodoItem:

public List<TodoItem> Items { get; private set; }

public async Task<List<TodoItem>> RefreshDataAsync ()
{
Items = new List<TodoItem> ();
// RestUrl = http://developer.xamarin.com:8081/api/todoitems
var uri = new Uri (string.Format (Constants.RestUrl, string.Empty));
try {
var response = await client.GetAsync (uri);
if (response.IsSuccessStatusCode) {
var content = await response.Content.ReadAsStringAsync ();
Items = JsonConvert.DeserializeObject <List<TodoItem>> (content);
}
} catch (Exception ex) {
Debug.WriteLine (@"ERROR {0}", ex.Message);
}
return Items;
}

最后,您的 ListView itemsource 可以设置如下:

listView.ItemsSource = await RestService.RefreshDataAsync();

注意:这里是 official sample可以引用一下。

I'm enable to solve this error, i wanted to display listview of API data which is in large amount

在listview中显示大数据,这里是一个分页显示方法。获取API数据后,将其保存到本地CacheListData中。不要直接设置到listView中.ItemsSource 。并且您需要创建一个 ItemListData 来从 CacheListData 添加数据。根据您一次想要显示的添加数据的数量。当 listview 滚动到底部时,然后显示 添加更多滑动方法来重新加载下一页数据。

一般解决办法是先将大量数据缓存到本地,然后逐页获取数据进行展示。 Here is a solution link can refer to.

关于json - 使用 Rest Api 的 Xamarin 中的 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54242586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com