public override View GetView(int position, View convertView, ViewGroup parent) { int sectionnum = 0; foreach (var section in sections.Keys) { var adapter = sections [section]; int size = adapter.Count + 1; // check if position inside this section if (position == 0) { return(headers.GetView(sectionnum, convertView, parent)); } if (position < size) { return(adapter.GetView(position - 1, convertView, parent)); } // otherwise jump into next section position -= size; sectionnum++; } return(null); }
public void setListViewHeightBasedOnChildren(ListView listView) { try { ArrayAdapter listAdapter = (ArrayAdapter)listView.Adapter; if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; for (int i = 0; i < listAdapter.Count; i++) { View listItem = listAdapter.GetView(i, null, listView); listItem.Measure(0, 0); totalHeight += listItem.MeasuredHeight; } ViewGroup.LayoutParams _params = listView.LayoutParameters; _params.Height = totalHeight + (listView.DividerHeight * (listAdapter.Count - 1)); if (_params.Height < 250) //to have min height { _params.Height = 250; //to have min height } listView.LayoutParameters = _params; listView.RequestLayout(); } catch (Exception ex) { } }
/// <summary> /// Grouped list: view could be a 'section heading' or a 'data row' /// </summary> public override View GetView(int position, View convertView, ViewGroup parent) { // Get our object for this position var item = this.rows[position]; View view; if (item is Header) { view = headers.GetView(((Header)item).SectionIndex, convertView, parent); view.Clickable = false; view.LongClickable = false; return(view); } int i = position - 1; while (i > 0 && rows[i] is Sample) { i--; } Header h = (Header)rows[i]; view = sections[h.Name].GetView(position - i - 1, convertView, parent); view.FindViewById <TextView>(Android.Resource.Id.Text1).Text = ((Sample)item).Name; return(view); }
public override View GetView(int position, View convertView, ViewGroup parent) { int sectionnum = 0; foreach (var section in sections.Keys) { var adapter = sections[section]; int size = adapter.Count + 1; if (position == 0) { return(headers.GetView(sectionnum, convertView, parent)); } if (position < size) { return(adapter.GetView(position - 1, convertView, parent)); } position -= size; sectionnum++; } return(null); /*var view = convertView ?? activity.LayoutInflater.Inflate(Resource.Layout.listviewCliente, parent, false); * var textNombre = view.FindViewById<TextView>(Resource.Id.textListViewNombreCliente); * var textRut = view.FindViewById<TextView>(Resource.Id.textListViewRUTCliente); * textNombre.Text = clientes[position].NombreCompleto; * textRut.Text = "RUT: " + clientes[position].Rut; * return view;*/ }
private int measureContentWidth(ArrayAdapter listAdapter) { ViewGroup mMeasureParent = null; int maxWidth = 0; View itemView = null; int itemType = 0; ArrayAdapter adapter = listAdapter; int widthMeasureSpec = View.MeasureSpec.MakeMeasureSpec(0, MeasureSpecMode.Unspecified); int heightMeasureSpec = View.MeasureSpec.MakeMeasureSpec(0, MeasureSpecMode.Unspecified); int count = adapter.Count; for (int i = 0; i < count; i++) { int positionType = adapter.GetItemViewType(i); if (positionType != itemType) { itemType = positionType; itemView = null; } if (mMeasureParent == null) { mMeasureParent = new FrameLayout(this); } itemView = adapter.GetView(i, itemView, mMeasureParent); itemView.Measure(widthMeasureSpec, heightMeasureSpec); int itemWidth = itemView.MeasuredWidth; if (itemWidth > maxWidth) { maxWidth = itemWidth; } } return(maxWidth + 40); }