在使用 REST API 的 Xamarin 中显示列表

酒窖银行

我想在使用 API 的 Xamarin (VS 2017) 中显示产品列表,但是在运行我的应用程序时,它向我显示了一个空列表(如图所示)

截屏

对于上述我通过邮递员验证该服务可以使用

邮差

然后我创建一个名为 ApiServices 的服务,它使用 API:

APISERVICE.CS:

public async Task<Response> GetList<T>(string urlBase, string servicePrefix, string controller)
        {
            try
            {
                var client = new HttpClient();          
                client.BaseAddress = new Uri(urlBase);
                var url = string.Format("{0}{1}", servicePrefix, controller);
                var response = await client.GetAsync(url);
                var result = await response.Content.ReadAsStringAsync();

                if (!response.IsSuccessStatusCode)
                {
                    return new Response
                    {
                        IsSuccess = false,
                        Message = result,
                    };
                }

                var list = JsonConvert.DeserializeObject<List<T>>(result);

                return new Response
                {
                    IsSuccess = true,
                    Message = "Ok",
                    Result = list,
                };
            }
            catch (Exception ex)
            {
                return new Response
                {
                    IsSuccess = false,
                    Message = ex.Message,
                };
            }
        }

然后,在我的 ProductsViewModel 中,我调用 GetList 方法并传递参数:

PRODUCTOSVIEWMODEL.CS:

public ObservableCollection<Product> Productos { get { return this.productos;  }
                                                           set { this.SetValue(ref this.productos, value); }
                                                         }    
        private ObservableCollection<Product> productos;    
        private ApiService apiService;

        public ProductosViewModel()
        {
            this.apiService = new ApiService();
            this.LoadProductos();
        }

        private async void LoadProductos()
        {
            var response = await this.apiService.GetList<Product>("https://salesapiservices.azurewebsites.net", "/api", "/Products");

            if (!response.IsSuccess)
            {
                await Application.Current.MainPage.DisplayAlert("Error", response.Message, "Aceptar");
                return;
            }

            var list = (List<Product>)response.Result;              
            Productos = new ObservableCollection<Product>(list);
        }

最后,在我看来,我展示了我想要的元素:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Fundamentos.Views.ProductosPage"
             BindingContext="{Binding Main, Source={StaticResource Locator}}"
             Title="Productos">

    <ContentPage.Content>
        <StackLayout
            BindingContext="{Binding Productos}"
            Padding="4">

            <ListView 
                ItemsSource="{Binding Productos}">                    
            </ListView>

        </StackLayout>
    </ContentPage.Content>

</ContentPage>

我附上我的产品型号:

public class Product
    {
        public int ProductId { get; set; }

        public string Description { get; set; }

        public string Remarks { get; set; }

        public string ImagePath { get; set; }

        public Decimal Price { get; set; }

        public bool IsAvailable { get; set; }

        public DateTime PublishOn { get; set; }

        public string ImageFullPath
        {
            get
            {
                if (string.IsNullOrEmpty(this.ImagePath))
                {
                    return "noproduct";
                }

                return $"https://salesbackend.azurewebsites.net/{this.ImagePath.Substring(1)}";
            }

        }

        public override string ToString()
        {
            return this.Description;
        }
    }

我验证 JSON 是否到达:

JSON

值得一提的是,我占用的是MVVM模式,并且在MainViewModel中实例化了ProductsViewModel类,查看了代码也没有发现错误!

对我有什么帮助吗?请继续关注您的评论

迪尚

由于您绑定的模型ListView是复杂类型,您需要为您的模型定义自定义布局ListView

您可以参考以下代码:

<ListView ItemsSource="{Binding Productos}"> 
<ListView.ItemTemplate>
   <DataTemplate>
      <ViewCell>
              <Label Text="{Binding Description}"
                FontSize="Large" 
                FontAttributes="Bold" 
                HorizontalTextAlignment="Start"
                Margin="20,0,0,0"
                VerticalTextAlignment="Center"
                >
    </ViewCell>
  </DataTemplate>
</ListView.ItemTemplate>
</ListView>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用 REST API、自定义列表视图、适配器、行布局在 xamarin android c# 中填充列表视图

来自分类Dev

如何使用 REST API 在 SharePoint 中获取列表项?

来自分类Dev

使用REST API在Magento中显示类别及其子类别

来自分类Dev

使用Rest API的Sharepoint列表项的总和

来自分类Dev

如何使用REST API删除项目列表

来自分类Dev

使用jQuery显示来自Rest API的数据

来自分类Dev

使用Xamarin在跨平台的本机应用程序中使用安全的REST API

来自分类Dev

使用Rest API在Android中登录Drupal

来自分类Dev

使用Java中的Rest API上传文件

来自分类Dev

使用Modle中的Rest API创建测验

来自分类Dev

使用REST API更新Confluence中的页面

来自分类Dev

使用JSON在python中创建Rest Api?

来自分类Dev

使用遍历在 Pyramid 中构建 REST API

来自分类Dev

如何使用Rest API从自定义列表的文件夹中获取列表项?

来自分类Dev

使用移动应用程序中的Kestrel连接到Netcore 3.1本地主机REST API时Xamarin连接被拒绝

来自分类Dev

无法使用REST API

来自分类Dev

使用USDA REST API

来自分类Dev

使用REST API获取SharePoint列表的不同数据

来自分类Dev

使用Paypal REST API获取计费协议列表

来自分类Dev

如何使用Smartsheet REST API连续获取讨论列表?

来自分类Dev

使用REST API获取SharePoint列表的不同数据

来自分类Dev

使用外部 API (REST)(java) 上的 Get 方法读取列表

来自分类Dev

我在REST API中使用从列表中删除时的类型不兼容

来自分类Dev

如何使用ADO Rest API获取特定版本中的测试运行列表

来自分类Dev

如何使用REST API获取列表中多个人员或组的标题

来自分类Dev

如何使用 REST API 在 ALM 的测试实验室中获取文件夹列表?

来自分类Dev

如果我有对象ID,如何使用REST API在AzureAD中获取对象的显示名称?

来自分类Dev

使用客户端 REST api 在 Laravel 中不显示 PayPal 按钮

来自分类Dev

如何使用Spring以编程方式使用Rest API中的文件?

Related 相关文章

  1. 1

    如何使用 REST API、自定义列表视图、适配器、行布局在 xamarin android c# 中填充列表视图

  2. 2

    如何使用 REST API 在 SharePoint 中获取列表项?

  3. 3

    使用REST API在Magento中显示类别及其子类别

  4. 4

    使用Rest API的Sharepoint列表项的总和

  5. 5

    如何使用REST API删除项目列表

  6. 6

    使用jQuery显示来自Rest API的数据

  7. 7

    使用Xamarin在跨平台的本机应用程序中使用安全的REST API

  8. 8

    使用Rest API在Android中登录Drupal

  9. 9

    使用Java中的Rest API上传文件

  10. 10

    使用Modle中的Rest API创建测验

  11. 11

    使用REST API更新Confluence中的页面

  12. 12

    使用JSON在python中创建Rest Api?

  13. 13

    使用遍历在 Pyramid 中构建 REST API

  14. 14

    如何使用Rest API从自定义列表的文件夹中获取列表项?

  15. 15

    使用移动应用程序中的Kestrel连接到Netcore 3.1本地主机REST API时Xamarin连接被拒绝

  16. 16

    无法使用REST API

  17. 17

    使用USDA REST API

  18. 18

    使用REST API获取SharePoint列表的不同数据

  19. 19

    使用Paypal REST API获取计费协议列表

  20. 20

    如何使用Smartsheet REST API连续获取讨论列表?

  21. 21

    使用REST API获取SharePoint列表的不同数据

  22. 22

    使用外部 API (REST)(java) 上的 Get 方法读取列表

  23. 23

    我在REST API中使用从列表中删除时的类型不兼容

  24. 24

    如何使用ADO Rest API获取特定版本中的测试运行列表

  25. 25

    如何使用REST API获取列表中多个人员或组的标题

  26. 26

    如何使用 REST API 在 ALM 的测试实验室中获取文件夹列表?

  27. 27

    如果我有对象ID,如何使用REST API在AzureAD中获取对象的显示名称?

  28. 28

    使用客户端 REST api 在 Laravel 中不显示 PayPal 按钮

  29. 29

    如何使用Spring以编程方式使用Rest API中的文件?

热门标签

归档