I am trying to inflate a listview using custom adapter.Dta is coming from web service.When i am running the code using dummy data,the listview is populating.But i am unable to do it using web service.Because i am not able to populate the adapter using web service data. Following is my code for custom adapter:-
namespace Example
{
public class CustomListAdapter : BaseAdapter<FacilitySiteEntity>
{
Activity context;
public FacilitySearchCriteria FacilitySearchCriteria1{ get; set; }
public List<FacilitySiteEntity> items;
public CustomListAdapter(Activity context, IEnumerable<FacilitySiteEntity> newfacility)
: base()
{
this.context = context;
this.items = newfacility.ToList();
}
public override int Count
{
get { return items.Count; }
}
public override Java.Lang.Object GetItem(int position)
{
return position;
}
public override long GetItemId(int position)
{
return position;
}
public override FacilitySiteEntity this[int position]
{
get { return items[position]; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
BALFacility obb = new BALFacility ();
var facilities = obb.FacilityResult (this.FacilitySearchCriteria1);
var view = convertView ?? context.LayoutInflater.Inflate(Resource.Layout.FacilityInflate, null);
var itemm = items[position];
if (facilities != null) {
int n = facilities.Count;
if (facilities.Count >= 1) {
for(int i =0;i<n;i++)
{
var one = view.FindViewById<TextView> (Resource.Id.txtFacilityNameTitle);
var two = view.FindViewById<TextView> (Resource.Id.txtFacilityLine2);
var three = view.FindViewById<TextView> (Resource.Id.txtFacilityLine3);
one.Text = itemm.FacilityName;
two.Text = itemm.Address1 + "," + itemm.Address2;
three.Text = itemm.City + "," + itemm.PostalCode;
}
}
}
return view;
}
public FacilitySiteEntity GetItemAtPosition(int position)
{
return items[position];
}
}
}
My Activity is as follows:-
namespace Example
{
[Activity (Label = "FacilityResultActivity",ScreenOrientation = ScreenOrientation.Portrait)]
public class FacilityResultActivity : Activity
{
public const string APISiteName="http://mysamplesite.com/";
//public List<NewFacilityEntity> ent;
public FacilitySearchCriteria FacilitySearchCriteria1{ get; set; }
//public CustomListAdapter listadp;
protected override void OnCreate (Bundle bundle)
{
//NewCustomAdapter listadapter;
base.OnCreate (bundle);
var sample = new List<FacilitySiteEntity> ();
var listadpt = new CustomListAdapter (this,sample);
SetContentView (Resource.Layout.SearchResultOfFacilities);
var something = new List<FacilitySiteEntity>
{
new FacilitySiteEntity{FacilityName =FacilitySearchCriteria1.SiteName, City = FacilitySearchCriteria1.City},
//above is what i am trying to do,but i am not able to do.
//Following are dummy data, and i am able to populate the listview using following, but not using the above lines
new FacilitySiteEntity {FacilityName = "ABC", Address1 = "jgjfhgfd"},
new FacilitySiteEntity {FacilityName = "SCSC", Address1 ="serres"},
new FacilitySiteEntity {FacilityName = "SPSP", Address1 = "tryrytutu"}
var cstm = new CustomListAdapter (this, something);
cstm.FacilitySearchCriteria1 = new FacilitySearchCriteria ();
var listview = (ListView)FindViewById (Resource.Id.listView);
listview.Adapter = cstm;
}
}
}
Following are the classes with properties which i am using:-
public class FacilitySiteEntity
{
public int FacilityID { get; set; }
public int GeoAreaID { get; set; }
public int ClientID { get; set; }
public string FacilityName { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public int StateID { get; set; }
public int CountryID { get; set; }
public string PostalCode { get; set; }
public decimal Longitude { get; set; }
public decimal Latitude { get; set; }
public bool Active { get; set; }
public string ContactNumber { get; set; }
public string GeoAreaName { get; set; }
public string Country { get; set; }
public string State { get; set; }
public string StateCode { get; set; }
public string ContactName { get; set; }
public int SurveyCloneID{get;set;}
}
public class FacilitySearchCriteria
{
public string StateId{ get; set;}
public string City{ get; set;}
public string SiteId{ get; set;}
public string SiteName{ get; set;}
}
Following is the class with method calls to get data from web services:-
public class BALFacility
{
public List<FacilitySiteEntity> FacilityResult(FacilitySearchCriteria objSearchCriteria)
{
CommonMethod obj = new CommonMethod ();
string responseFromServer= obj.GetServiceData ("SearchFacility?Token=" + "&StateID="+ objSearchCriteria.StateId +"&City="+ objSearchCriteria.City +"&SiteID="+ objSearchCriteria.SiteId +"&SiteName="+ objSearchCriteria.SiteName +"&PortalAliasID=" + ConstantValues.SelectedPortalAliasID.ToString ());
var facilities = Newtonsoft.Json.JsonConvert.DeserializeObject<List<FacilitySiteEntity>> (responseFromServer);
return facilities;
}
//Other web service methods...
}