Quantcast
Channel: Recent Threads — Xamarin Community Forums
Viewing all articles
Browse latest Browse all 204402

Unable to populate ListView using custom adapter!

$
0
0

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...
    }

Viewing all articles
Browse latest Browse all 204402

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>