在 Xamarin.forms C# 中显示带有 JSON 数据的列表

Posted

技术标签:

【中文标题】在 Xamarin.forms C# 中显示带有 JSON 数据的列表【英文标题】:Show list with JSON data in Xamarin.forms C# 【发布时间】:2017-01-21 11:00:14 【问题描述】:

我想将 JSON 数据放在一个列表中以向用户显示记录。但是当我运行系统时,列表只显示了两次项目名称,而不是 JSON 数据。

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("Http://www.eletrotechautomacoes.com.br");
string url = string.Format("/pontos/consulta.php");
var response = await client.GetAsync(url);
var result = response.Content.ReadAsStringAsync().Result;
List<ExchangeRates> listaProdutos = JsonConvert.DeserializeObject<List<ExchangeRates>>(result);

    this.LlistSpecials.ItemsSource = listaProdutos;

我认为错误在这一行:

this.LlistSpecials.ItemsSource = listaProdutos;

我的困难是显示列表中的内容。我需要对要显示的列表进行一些转换吗?您知道显示此列表的程序吗?它目前正在返回项目名称两次。我认为这与 JSON 项目的数量有关,这也是两个。

文件 JSON:

[
    "id": "1",
    "nome": "pendrive",
    "preco": "20.00",
    "tipo": "eletronico"
, 
    "id": "2",
    "nome": "Monitor",
    "preco": "250.00",
    "tipo": "eletronicos"
]

对象:

public class ExchangeRates

    public string id  get; set; 
    public string nome  get; set; 
    public string preco  get; set; 
    public string tipo  get; set; 

【问题讨论】:

您能发布您的 Xaml 或 ListView 实例化代码吗? 如果您没有为列表提供模板,它只会显示每个对象的 ToString() 值,默认情况下将是类的名称 我认为您还没有实例化列表: List listaProdutos = new List(); 【参考方案1】:

如果您的目标是在 ListView 中显示 Json 对象中的每个属性,那么您需要创建一个自定义单元格。文档here。 如果您使用的是 textCell,则需要定义要显示的属性的绑定。

如果您想在您的 Xaml 代码中显示示例的“名称”:

  <ListView>
    <ListView.ItemTemplate>
      <DataTemplate>
        <TextCell Text="Binding nome" />
      </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>

【讨论】:

以上是关于在 Xamarin.forms C# 中显示带有 JSON 数据的列表的主要内容,如果未能解决你的问题,请参考以下文章

使用 xamarin.forms 跨平台 C# 在设备日历上设置提醒

C# Xamarin Forms - 调用事件总是返回 null

Xamarin.forms如何在列表中显示彼此相邻的项目

Xamarin.Forms:应用程序不在页面上显示元素

用于 Xamarin.Forms 的带有标头 (LongListSelector) 的 ListView

Xamarin Forms iOS 远程通知不显示