Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在xamarin表单的嵌套listview中添加2个列表_Listview_Xamarin.forms - Fatal编程技术网

如何在xamarin表单的嵌套listview中添加2个列表

如何在xamarin表单的嵌套listview中添加2个列表,listview,xamarin.forms,Listview,Xamarin.forms,我是xamarin froms的新手。我需要在一个listview中绑定2个列表。我正在从webservice获取数据集(总共3个数据表)。我尝试过在listview中实现嵌套listview,即listview。我给了他们名字,但当我试图访问内部listview代码时,后面的代码没有被接收(我知道原因)。我已经研究过了,但是没有相关的文章要看。以下是我已经实现的。基本上,我正在尝试构建一个调查/测试应用程序 IEnumerable<StartParticularSurvey> _q

我是xamarin froms的新手。我需要在一个listview中绑定2个列表。我正在从webservice获取数据集(总共3个数据表)。我尝试过在listview中实现嵌套listview,即listview。我给了他们名字,但当我试图访问内部listview代码时,后面的代码没有被接收(我知道原因)。我已经研究过了,但是没有相关的文章要看。以下是我已经实现的。基本上,我正在尝试构建一个调查/测试应用程序

IEnumerable<StartParticularSurvey> _questionList;
IEnumerable<StartParticularSurvey> _answerList;

var response = e.Result.ToString();
var result = StartParticularSurvey.FromJson(response);
            if (result[0][0].bit_HasError == true)
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    Navigation.PushAsync(new UserSurveyList());
                    DisplayAlert("Alert!", result[0][0].vchar_ErrorMsg, "Ok");
                });
            }
            else
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    var questionDataset = result[1][0]; //trying to get Table2 in questionDataset
                    var answerDataset = result[2][0]; //trying to get Table3 in answerDataset
                    _questionList = questionDataset as IEnumerable<StartParticularSurvey>;
                    _answerList = answerDataset as IEnumerable<StartParticularSurvey>;
                    lvSurveyQuestion.ItemsSource = _questionList;
                    lvSurveyAnswer.itemSource = _answerList; //Here is where the .cs is not picking up and i know why.
                });
            }  
IEnumerable\u问题列表;
IEnumerable\u回答列表;
var response=e.Result.ToString();
var result=StartParticularSurvey.FromJson(响应);
if(结果[0][0]。位\u HasError==true)
{
Device.beginInvokeMainThread(()=>
{
PushAsync(新的UserSurveyList());
DisplayAlert(“Alert!”,结果[0][0]。vchar_ErrorMsg,“Ok”);
});
}
其他的
{
Device.beginInvokeMainThread(()=>
{
var questionDataset=result[1][0];//正在尝试获取questionDataset中的表2
var answerDataset=result[2][0];//正在尝试获取answerDataset中的表3
_questionList=作为IEnumerable的questionDataset;
_answerList=作为IEnumerable的answerDataset;
lvSurveyQuestion.ItemsSource=\u问题列表;
lvSurveyAnswer.itemSource=\u answerList;//这里是.cs不起作用的地方,我知道原因。
});
}  
xaml:


型号:

namespace IVSConnectMobile.Model
{
    public partial class StartParticularSurvey
    {
        [JsonProperty("bit_HasError", NullValueHandling = NullValueHandling.Ignore)]
        public bool? bit_HasError { get; set; }

        [JsonProperty("vchar_ErrorMsg", NullValueHandling = NullValueHandling.Ignore)]
        public string vchar_ErrorMsg { get; set; }

        [JsonProperty("int_SurveyQuestionID", NullValueHandling = NullValueHandling.Ignore)]
        public long? int_SurveyQuestionID { get; set; }

        [JsonProperty("vchar_Description", NullValueHandling = NullValueHandling.Ignore)]
        public string vchar_Description { get; set; }

        [JsonProperty("vchar_Instruction")]
        public string vchar_Instruction { get; set; }

        [JsonProperty("int_AnswerType", NullValueHandling = NullValueHandling.Ignore)]
        public long? int_AnswerType { get; set; }

        [JsonProperty("vchar_Option", NullValueHandling = NullValueHandling.Ignore)]
        public string vchar_Option { get; set; }
    }

    public partial class StartParticularSurvey
    {
        public static List<List<StartParticularSurvey>> FromJson(string json) => JsonConvert.DeserializeObject<List<List<StartParticularSurvey>>>(json, IVSConnectMobile.Model.Converter.Settings);
    }

    public static class Serialize
    {
        public static string ToJson(this List<List<StartParticularSurvey>> self) => JsonConvert.SerializeObject(self, IVSConnectMobile.Model.Converter.Settings);
    }

    internal static class Converter
    {
        public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
        {
            MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
            DateParseHandling = DateParseHandling.None,
            Converters = {
                new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
            },
        };
    }
}
namespace IVSConnectMobile.Model
{
公共部分类StartParticularSurvey
{
[JsonProperty(“位\u HasError”,NullValueHandling=NullValueHandling.Ignore)]
公共bool?bit_hasrerror{get;set;}
[JsonProperty(“vchar_ErrorMsg”,NullValueHandling=NullValueHandling.Ignore)]
公共字符串vchar_ErrorMsg{get;set;}
[JsonProperty(“int_SurveyQuestionID”,NullValueHandling=NullValueHandling.Ignore)]
公共long?int_SurveyQuestionID{get;set;}
[JsonProperty(“vchar_Description”,NullValueHandling=NullValueHandling.Ignore)]
公共字符串vchar_描述{get;set;}
[JsonProperty(“vchar_指令”)]
公共字符串vchar_指令{get;set;}
[JsonProperty(“int_AnswerType”,NullValueHandling=NullValueHandling.Ignore)]
公共long?int_应答类型{get;set;}
[JsonProperty(“vchar_选项”,NullValueHandling=NullValueHandling.Ignore)]
公共字符串vchar_选项{get;set;}
}
公共部分类StartParticularSurvey
{
来自json的公共静态列表(字符串json)=>JsonConvert.DeserializeObject(json,IVSConnectMobile.Model.Converter.Settings);
}
公共静态类序列化
{
公共静态字符串ToJson(此列表self)=>JsonConvert.SerializeObject(self,IVSConnectMobile.Model.Converter.Settings);
}
内部静态类转换器
{
公共静态只读JsonSerializerSettings设置=新JsonSerializerSettings
{
MetadataPropertyHandling=MetadataPropertyHandling.Ignore,
DateParseHandling=DateParseHandling.None,
转换器={
新的IsoDateTimeConverter{DateTimeStyles=DateTimeStyles.AssumeUniversal}
},
};
}
}

欢迎提出任何其他建议

编辑

我创建了2个模型

 public class SurveyAnswerList
    {
        public int int_AnswerType { get; set; }
        public string vchar_Option { get; set; }
    }

public class SurveyQuestionList : List<SurveyAnswerList>
    {
        public string vchar_Description { get; set; }

        public SurveyQuestionList(string description)
        {
            vchar_Description = description;
        }
    }
public class SurveyAnswerList
{
公共int_应答类型{get;set;}
公共字符串vchar_选项{get;set;}
}
公共课堂调查问题列表:列表
{
公共字符串vchar_描述{get;set;}
公共调查问题列表(字符串描述)
{
vchar_Description=描述;
}
}
暗藏

public List<Model.SurveyQuestionList> _list { get; set; }

_list = new List<Model.SurveyQuestionList>();
                Device.BeginInvokeOnMainThread(() =>
                {
                    for (int i = 0; i < result[1].Count; i++)
                    {
                        for (int j = 0; j < result[2].Count; j++)
                        {
                            if (result[1][i].int_SurveyQuestionID == result[2][j].int_SurveyQuestionID)
                            {
                                _list = new List<SurveyQuestionList>{
                                    new SurveyQuestionList(result[1][i].vchar_Description){
                                        new SurveyAnswerList{ vchar_Option = result[2][j].vchar_Option }
                                    }
                                };
                            }

                        }
                    }
                    lvSurvey.ItemsSource = _list;
                });
public List\u List{get;set;}
_列表=新列表();
Device.beginInvokeMainThread(()=>
{
对于(int i=0;i<结果[1]。计数;i++)
{
对于(int j=0;j
XAML:



public List<Model.SurveyQuestionList> _list { get; set; }

_list = new List<Model.SurveyQuestionList>();
                Device.BeginInvokeOnMainThread(() =>
                {
                    for (int i = 0; i < result[1].Count; i++)
                    {
                        for (int j = 0; j < result[2].Count; j++)
                        {
                            if (result[1][i].int_SurveyQuestionID == result[2][j].int_SurveyQuestionID)
                            {
                                _list = new List<SurveyQuestionList>{
                                    new SurveyQuestionList(result[1][i].vchar_Description){
                                        new SurveyAnswerList{ vchar_Option = result[2][j].vchar_Option }
                                    }
                                };
                            }

                        }
                    }
                    lvSurvey.ItemsSource = _list;
                });
             <ListView x:Name="lvSurvey"
                      IsGroupingEnabled="True"
                      GroupDisplayBinding="{Binding vchar_Description}">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <StackLayout>
                                <Label Text="{Binding vchar_Option}"/>
                            </StackLayout>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
<ListView x:Name="lvSurvey"
                  IsGroupingEnabled="True">
<ListView.GroupHeaderTemplate>
        <DataTemplate>
            <ViewCell>
                <Label Text="{Binding vchar_Description}" />
            </ViewCell>
        </DataTemplate>
    </ListView.GroupHeaderTemplate>


            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout>
                            <Label Text="{Binding vchar_Option}"/>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>