Search code examples
c#visual-studiodatatablexamarin.androidandroid-listview

How to Convert DataTable to ListView Adapter in Xamarin.Android


How can convert or use DataTable for Listview in Xamarin.Android like I showed in my picture please help me...

Note that I use Xamarin.Android not Xamarin.Forms

image here

here is my code :

 namespace CRM.PL
            {
                [Activity(Label = "AC_Expense_Search")]
                public class AC_Expense_Search : Activity
                {
                    ListView listView1;


                protected override void OnCreate(Bundle savedInstanceState)
                {
                    base.OnCreate(savedInstanceState);
                    SetContentView(Resource.Layout.L_Expense_Search);
                    // Create your application here
                    //**********************************************
                    listView1 = FindViewById<ListView>(Resource.Id.listView1);
                    //**************** Load Data ****************************
                    LoadData();
                    //**************** Event ****************************

                }

                public DataTable DataTableCollection { get; set; }

                void LoadData()
                {
  
                    DataTable dt = cls_Epense.Expense_select_Top10();
                    DataTableCollection = dt;
     
                    listView1.Adapter = dt;
                }

            }
        }

Solution

  • You can not set DataTable for ListView.Adapter directly.

    1. You need to get each item data from DataTable first,
    2. Then you can add them for each ListItems of ListView.
    3. Last, you can set the ListItems as data for ListView Adapter.

    For example:

    void LoadData()
    {
    
        DataTable dt = cls_Epense.Expense_select_Top10();
        DataTableCollection = dt;
    
        List<ListItem> listItems = new List<ListItem>();
    
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            ListItem  listitem = new ListItem();
            listitem.FirstParamater = dt.Rows[i][0].ToString();
            listitem.SecondParamater = dt.Rows[i][1].ToString();
            listitem.ThirdParamater = dt.Rows[i][2].ToString();
            ...
            listItems.Add(listitem);
        }
    
        listviewAdapter = new ListViewAdapter(this, listItems );
    
        listView1.Adapter = listviewAdapter;
    }
    

    The sample code of ListItem, you need to custom the needed ListItem for your project.

    public class ListItem
    {
        public string FirstParamater { get; set; }
        public string SecondParamater { get; set; }
        public string ThirdParamater { get; set; }
    }