Dear all,
I want to fill ListView with data from WebService with JSON structure.
Data is gathered perfectly.
But when I activate
IsGroupingEnabled=true;
GroupDisplayBinding = new Binding("group");
content is not displayed.
This is my Model codes :
public class modelPacketGrp
{
public string group { get; set; }
public modelPacket content { get; set; }
}
public class modelPacket
{
public int orderid { get; set; }
public string destination_id { get; set; }
public string destination_name { get; set; }
public string package_id { get; set; }
public string package_name { get; set; }
public string price { get; set; }
public string description { get; set; }
public string service_list { get; set; }
public string duration { get; set; }
public string duration_day { get; set; }
public string duration_night { get; set; }
public string minimum_pax { get; set; }
}
This is my ViewModel :
` public async Task<modelPacketGrp[]> GetPackage(String destination_id)
{
var client = new System.Net.Http.HttpClient();
client.BaseAddress = new Uri(App.baseUrl);
StringContent str = new StringContent("act=package_view&destination_id="+destination_id, Encoding.UTF8, "application/x-www-form-urlencoded");
var response = await client.PostAsync(new Uri(App.baseUrl + "view.php"), str);
var placesJson = response.Content.ReadAsStringAsync().Result;
package_view package_data = new package_view();
if (placesJson != "")
{
package_data = JsonConvert.DeserializeObject<package_view>(placesJson);
}
return package_data.modelpacket;
//return package_data.modelpacket;
}
public class package_view
{
[JsonProperty("results")]
public modelPacketGrp[] modelpacket { get; set; }
}
`
This is my code for view :
`
async void GetData(String dest_id)
{
dbaseView getdata = new dbaseView();
modelPacketGrp[] data_package = await getdata.GetPackage(dest_id);
listView.ItemsSource = data_package;
}
public partial class DestinationDetailPage : ContentPage, INotifyPropertyChanged
{
static ListView listView = new ListView();
public DestinationDetailPage(modelDestination detail)
{
//other codes
listView = new ListView
{
//IsGroupingEnabled=true,
//GroupHeaderTemplate = null,
//GroupDisplayBinding = new Binding("group"),
ItemTemplate = new DataTemplate(typeof(TextCell)),
Header=toplayout,// implement stack toplayout in header
HasUnevenRows = true,
SeparatorColor=Color.Black,// FromRgb(241,241,241),
SeparatorVisibility = SeparatorVisibility.Default
};
listView.ItemTemplate.SetBinding(TextCell.TextProperty, "content.package_name");
GetData(detail.destination_id); //calling function to get data
Content=listView;
}
`
and this is my data in JSON :
{"results":[{"group":"01","content":{"service_list":"car,hotel,show","destination_name":"Mount Semeru","destination_id":"01","package_id":"01","package_name":"Mt. Semeru Mountaineering","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","minimum_pax":"2","duration_day":"4","duration_night":"3","price":"3.900.000","orderid":10,"duration":"4D3N"}},{"group":"01","content":{"service_list":"car,tent","destination_name":"Mount Semeru","destination_id":"01","package_id":"02","package_name":"Mt. Semeru Mountaineering 2","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","minimum_pax":"2","duration_day":"3","duration_night":"2","price":"2.900.000","orderid":10,"duration":"3D2N"}},{"group":"01","content":{"service_list":null,"destination_name":"Mount Semeru","destination_id":"01","package_id":"05","package_name":"Mt. Semeru Mountaineering 3","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","minimum_pax":"2","duration_day":"2","duration_night":"1","price":"1.900.000","orderid":0,"duration":"2D1N"}}]}
when I remove comment from code below, ListView only display value of group.
//IsGroupingEnabled=true,
//GroupHeaderTemplate = null,
//GroupDisplayBinding = new Binding("group"),
Is my JSON structure or my code is right?
Thanks