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