热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Xamarin形式:Listview分组问题

如何解决《Xamarin形式:Listview分组问题》经验,为你挑选了1个好方法。

我正在尝试为我的以下JSON数据实现listview分组。

JSON示例:

{ 
   "cbrainBibleBooksHB":[ { 
        "book":"2 John",
         "cbrainBibleTOList":[ 
            { 
               "bookName":"2 John",
               "chapter":"1",
               "pageUrl":"/edu-bible/9005/1/2-john-1"
            },
            {....}
         ]
      },
      { 
         "book":"3 John",
         "cbrainBibleTOList":[ 
            {  
               "bookName":"3 John",
               "chapter":"1",
               "pageUrl":"/edu-bible/9007/1/3-john-1"
            },
            {...}
         ]
      }
   ]
 }

我正在尝试按书名对JSON数据进行分组。

我尝试如下:

模型:

public class BibleTestament
    {
        public List cbrainBibleBooksHB { get; set; }
    }

    public class CbrainBibleBooksHB : ObservableCollection
    {
        public string book { get; set; }
        public List cbrainBibleTOList { get; set; }
    }

    public class CbrainBibleTOList
    {
        public string chapter { get; set; }
        public string pageUrl { get; set; }
        public string bookName { get; set; }
    }

视图模型

HttpClient client = new HttpClient();
                var RespOnse= await client.GetAsync("rest api");
                if (Response.IsSuccessStatusCode)
                {
                    string respOnse= await Response.Content.ReadAsStringAsync();
                    Debug.WriteLine("response:>>" + response);
                    BibleTestament bibleTestament = new BibleTestament();
                    if (response != "")
                    {
                        bibleTestament = JsonConvert.DeserializeObject(response.ToString());
                    }
                    AllItems = new ObservableCollection(bibleTestament.cbrainBibleBooksHB);

XAML


        
            
                
                    
                        
                            
                    
                
                
                    
                        
                            
                                

                                    
                            
                        
                    
                
                
                    
            
        
    

但是,在运行项目时,UI上没有任何数据显示。Binding: 'book' property not found on 'System.Object[]', target property: 'Xamarin.Forms.Label.Text'在输出框中获取消息。以xamarin形式实现对列表视图的分组非常困难。谁能帮我做到这一点?我在这里上传了一个示例项目。



1> Himanshu Dwi..:

您可以使用最新的Xamarin.Forms版本== 3.5的BindableLayout来代替使用成组的Listview,而无需花费很多精力。

更新您的模型

public class CbrainBibleBooksHB
{
   public string book { get; set; }
   public List cbrainBibleTOList { get; set; }
}

XAML:


    
        
            
                
                    
                        
                        
                    
                    
            
        
    

注意:此处ParentContentPage是父内容页面的x:Name,用于为命令提供参考。

ViewModel:

class BibleTestamentViewModel : INotifyPropertyChanged
{
    public ICommand TapCommand { get; private set; }

    public BibleTestamentViewModel()
    {
        TapCommand = new Command(ChapterClickedClicked);
    }

    private void ChapterClickedClicked(object sender)
    {
        //check value inside sender
    }
}

输出:


推荐阅读
author-avatar
邱氏家族_玉辈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有