Reputation: 381
public class CustomAdapter : BaseAdapter{
private const int TYPE_ITEM = 0;
private const int TYPE_SEPARATOR = 1;
private List<String> mData;
private TreeSet sectionHeader;
private LayoutInflater mInflater;
public CustomAdapter(Context context) {
mInflater = (LayoutInflater) context
.GetSystemService(Context.LayoutInflaterService);
}
public void addItem( String item) {
mData.Add(item);
NotifyDataSetChanged();
}
public void addSectionHeaderItem(String item) {
mData.Add(item);
sectionHeader.Add(mData.Count - 1);
NotifyDataSetChanged();
}
public int getItemViewType(int position) {
return sectionHeader.Contains(position) ? TYPE_SEPARATOR : TYPE_ITEM;
}
public int getViewTypeCount {
get{ return 2; }
}
public override int Count {
get {return mData.Count;}
}
public override GetItem this[int position] {
get{ return mData [position]; }
}
public override long GetItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
int rowType = getItemViewType(position);
if (convertView == null) {
holder = new ViewHolder();
switch (rowType) {
case TYPE_ITEM:
convertView = mInflater.Inflate(Resource.Layout.textViewItemsSeparator, parent);
holder.textView = (TextView) convertView.FindViewById(Resource.Id.textviewHeaderItems);
break;
case TYPE_SEPARATOR:
convertView = mInflater.Inflate(Resource.Layout.textViewHeaderItems, parent);
holder.textView = (TextView) convertView.FindViewById(Resource.Id.textviewItemsSeparator);
break;
}
convertView.Tag=holder;
} else {
holder = (ViewHolder)convertView.Tag as ViewHolder;
}
holder.textView.Text=mData[position];
return convertView;
}
public class ViewHolder:Java.Lang.Object {
public TextView textView;
}
OnActivityCreated:
mAdapter=new CustomAdapter(this);
for (int i = 0; i <= items.Count; i++) {
mAdapter.addItem (items [i].ToString ());
if (i == 0) {
mAdapter.addSectionHeaderItem ("Music");
} else if(i==13) {
mAdapter.addSectionHeaderItem ("Audio");
}
}
lst.Adapter = new CustomAdapter (Activity, mAdapter);
Create your custom adapter for ListView
You must override getViewTypeCount() method. This method returns the number of types of Views that will be created by getView method.
I was trying to create a header listview.
Upvotes: 1
Views: 128
Reputation: 9260
Set the text using the property of a TextView
holder.textView.Text = mData[position];
Under the hood, Xamarin converts the C# string
to Java CharSequence
and calls setText
for you.
You have to look at the documentation! It is a must when you're a beginner.
Upvotes: 1