Tuesday, July 30, 2013

ListView Binding in Mono for Android

Main.axml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ListView
        android:id="@+id/lstView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

Activity1.cs:

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using System.Collections.Generic;

namespace ListViewWithBaseAdapter
{
    [Activity(Label = "ListViewWithBaseAdapter", MainLauncher = true, Icon = "@drawable/icon")]
    public class Activity1 : Activity
    {
        int count = 1;
        ClassListView searchList;
        static List<PropertyDetails> objSearchList = new List<PropertyDetails>();

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

         
            ListView lstView = FindViewById<ListView>(Resource.Id.lstView);
            searchList = new ClassListView(this);
            lstView.Adapter = searchList;
        }
    }
}


ClassListView.cs:

using System;
using System.Collections.Generic;
using System.Text;
using Android.Widget;
using Android.App;

namespace ListViewWithBaseAdapter
{
    public class ClassListView : BaseAdapter
    {
        Activity context;

        List<PropertyDetails> SearchResults = new List<PropertyDetails>();
     
        public ClassListView(Activity context)
            : base()
        {
            this.context = context;

            SearchResults.Add(new PropertyDetails { PropertyID = "1" });
            SearchResults.Add(new PropertyDetails { PropertyID = "2" });
            SearchResults.Add(new PropertyDetails { PropertyID = "3" });
            SearchResults.Add(new PropertyDetails { PropertyID = "4" });
            SearchResults.Add(new PropertyDetails { PropertyID = "5" });
            SearchResults.Add(new PropertyDetails { PropertyID = "6" });
            SearchResults.Add(new PropertyDetails { PropertyID = "7" });
            SearchResults.Add(new PropertyDetails { PropertyID = "8" });
            SearchResults.Add(new PropertyDetails { PropertyID = "9" });
            SearchResults.Add(new PropertyDetails { PropertyID = "10" });
        }
   
        public override int Count
        {
            get { return SearchResults.Count; }
        }

        public override Java.Lang.Object GetItem(int position)
        {
            return position;
        }

        public override long GetItemId(int position)
        {
            return position;
        }

        public override Android.Views.View GetView(int position, Android.Views.View convertView, Android.Views.ViewGroup parent)
        {
            var item = SearchResults[position];
            var view = (convertView ?? context.LayoutInflater.Inflate(Resource.Layout.ListDesign, parent, false)) as LinearLayout;
            var tvPropertyName = view.FindViewById(Resource.Id.tvItemTitle) as TextView;
            tvPropertyName.SetText(item.PropertyID, TextView.BufferType.Normal);
            return view;
        }
    }
}


ListDesign.axml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:layout_width="match_parent"
        android:textStyle="bold"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="0dp"
        android:textSize="20dp"
        android:id="@+id/tvItemTitle" />
</LinearLayout>

PropertyDetails.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ListViewWithBaseAdapter
{
    class PropertyDetails
    {
        public string PropertyID { set; get; }
    }
}

Output:






No comments:

Post a Comment