Xamarin API Json 列表到 ListView
Xamarin API Json List to ListView
我有以下代码
这是我的属性:
using System;
using System.Collections.Generic;
using System.Text;
namespace ServLottery.Models
{
public class PendientesGiro
{
public int IDPendGiros { get; set; }
public string NumFactura { get; set; }
public double Monto { get; set; }
public int IDPisteroVenta { get; set; }
public int IDPisteroCanje { get; set; }
public string Identification { get; set; }
public string Nombre { get; set; }
public string FechaVenta { get; set; }
}
}
然后是视图模型:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
namespace ServLottery.Models
{
public class PendGirosViewModel
{
public IList<PendientesGiro> PendientesLista { get; set; }
public PendGirosViewModel()
{
try
{
PendientesLista = new ObservableCollection<PendientesGiro>();
GetPendGiros();
}
catch (Exception ex)
{
throw ex;
}
}
private async void GetPendGiros()
{
try
{
RestClient client = new RestClient();
var pend = await client.Get<Models.PendientesGiro>("https://servicentroapi.azurewebsites.net/api/Giros");
if (pend != null)
{
PendientesLista = pend;
}
}
catch (Exception ex)
{
throw ex;
}
}
}
}
以及我用来从 API
获取数据的函数
private async Task<List<PendientesGiro>> GetPendientesAsync()
{
List<PendientesGiro> PendientesLista = new List<PendientesGiro>();
HttpClient client = new HttpClient();
Uri uri = new Uri(string.Format("https://servicentroapi.azurewebsites.net/api/Giros", string.Empty));
HttpResponseMessage response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
string content = await response.Content.ReadAsStringAsync();
PendientesLista = JsonConvert.DeserializeObject<List<PendientesGiro>>(content);
Console.WriteLine("content :: " + content);
Console.WriteLine("Data :: " + PendientesLista);
}
return PendientesLista;
}
lv_Pend.ItemsSource = await GetPendientesAsync();
信息到达 ItemsSource 但未显示在 ListView 中,我认为我的问题出在 xaml 代码
<ListView x:Name="lv_Pend"
SelectedItem="{Binding PendientesGiro}"
ItemsSource="{Binding PendientesGiro}">
<ListView.ItemTemplate>
<DataTemplate>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Identification}" TextColor="White"/>
<Label Text="{Binding Name}" TextColor="White"/>
</StackLayout>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我希望我的列表显示身份和姓名,并且当我选择时能够获取与另一页相关的整组日期。
欢迎来到 SO!
来自共享 Xaml 代码,DataTemplate
中缺少 ViewCell
属性。检查 Custom Cells 的 ListView
,因此您可以修改如下:
<ListView x:Name="lv_Pend"
SelectedItem="{Binding PendientesGiro}"
ItemsSource="{Binding PendientesGiro}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell> // add ViewCell
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Identification}"
TextColor="Black" />
<Label Text="{Binding Name}"
TextColor="Black" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
它会起作用:
我有以下代码 这是我的属性:
using System;
using System.Collections.Generic;
using System.Text;
namespace ServLottery.Models
{
public class PendientesGiro
{
public int IDPendGiros { get; set; }
public string NumFactura { get; set; }
public double Monto { get; set; }
public int IDPisteroVenta { get; set; }
public int IDPisteroCanje { get; set; }
public string Identification { get; set; }
public string Nombre { get; set; }
public string FechaVenta { get; set; }
}
}
然后是视图模型:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
namespace ServLottery.Models
{
public class PendGirosViewModel
{
public IList<PendientesGiro> PendientesLista { get; set; }
public PendGirosViewModel()
{
try
{
PendientesLista = new ObservableCollection<PendientesGiro>();
GetPendGiros();
}
catch (Exception ex)
{
throw ex;
}
}
private async void GetPendGiros()
{
try
{
RestClient client = new RestClient();
var pend = await client.Get<Models.PendientesGiro>("https://servicentroapi.azurewebsites.net/api/Giros");
if (pend != null)
{
PendientesLista = pend;
}
}
catch (Exception ex)
{
throw ex;
}
}
}
}
以及我用来从 API
获取数据的函数private async Task<List<PendientesGiro>> GetPendientesAsync()
{
List<PendientesGiro> PendientesLista = new List<PendientesGiro>();
HttpClient client = new HttpClient();
Uri uri = new Uri(string.Format("https://servicentroapi.azurewebsites.net/api/Giros", string.Empty));
HttpResponseMessage response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
string content = await response.Content.ReadAsStringAsync();
PendientesLista = JsonConvert.DeserializeObject<List<PendientesGiro>>(content);
Console.WriteLine("content :: " + content);
Console.WriteLine("Data :: " + PendientesLista);
}
return PendientesLista;
}
lv_Pend.ItemsSource = await GetPendientesAsync();
信息到达 ItemsSource 但未显示在 ListView 中,我认为我的问题出在 xaml 代码
<ListView x:Name="lv_Pend"
SelectedItem="{Binding PendientesGiro}"
ItemsSource="{Binding PendientesGiro}">
<ListView.ItemTemplate>
<DataTemplate>
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Identification}" TextColor="White"/>
<Label Text="{Binding Name}" TextColor="White"/>
</StackLayout>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我希望我的列表显示身份和姓名,并且当我选择时能够获取与另一页相关的整组日期。
欢迎来到 SO!
来自共享 Xaml 代码,DataTemplate
中缺少 ViewCell
属性。检查 Custom Cells 的 ListView
,因此您可以修改如下:
<ListView x:Name="lv_Pend"
SelectedItem="{Binding PendientesGiro}"
ItemsSource="{Binding PendientesGiro}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell> // add ViewCell
<StackLayout Orientation="Horizontal">
<Label Text="{Binding Identification}"
TextColor="Black" />
<Label Text="{Binding Name}"
TextColor="Black" />
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
它会起作用: