[英]How can I make a ExpandableListView on Mono for Android
I'm trying to make an Expandable ListView, but I don't know how to retrieve the info of some methods from the ExpandableListAdapter, so here is my code: This the Main Activity: 我正在尝试创建一个Expandable ListView,但我不知道如何从ExpandableListAdapter中检索某些方法的信息,所以这是我的代码:这个主要活动:
[Activity (Label = "AR Transactions Details")]
public class ARInquiry : ExpandableListActivity
{
private ARExpandableListAdapter adapter;
private string[] groups = {"1","2","3","4"};
private string[,] children = {
{ "Arnold", "Barry", "Chuck", "David" },
{"Ace", "Bandit", "Cha-Cha", "Deuce"},
{ "Fluffy", "Snuggles", "", ""},
{ "Goldy", "Bubbles", "", "" }
};
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView(Resource.Layout.ar_inquiry);
//Restrieve the ExpandableListView from the layout
ExpandableListView listview = FindViewById<ExpandableListView>(Android.Resource.Id.List);
//Initialize the adapter with blank groups and children
//We will be adding children on a thread, and then update the ListView
adapter = new ARExpandableListAdapter(this, groups, children);
listview.SetAdapter(adapter);
}
}
This is the ExpandableListViewAdapter Class Code: 这是ExpandableListViewAdapter类代码:
public class ARExpandableListAdapter : BaseExpandableListAdapter
{
private Context context;
private string[] groups;
private string[,] children;
public ARExpandableListAdapter(Context context, string[] groups, string[,] children)
{
this.context = context;
this.groups = groups;
this.children = children;
}
public override Java.Lang.Object GetChild (int groupPosition, int childPosition)
{
return children[groupPosition, childPosition];
}
public override long GetChildId (int groupPosition, int childPosition)
{
return childPosition;
}
public override View GetChildView (int groupPosition, int childPosition, bool isLastChild, View convertView, ViewGroup parent)
{
if(convertView == null)
{
LayoutInflater infaInflater = (LayoutInflater) context.GetSystemService(Context.LayoutInflaterService);
convertView = infaInflater.Inflate(Resource.Layout.child_layout, null);
}
TextView tv = (TextView) convertView.FindViewById(Resource.Id.tvChild);
if(isLastChild == true)
{
return convertView;
}
tv.SetText(" " + children[groupPosition, childPosition], TextView.BufferType.Normal);
return convertView;
}
public override int GetChildrenCount (int groupPosition)
{
return children[groupPosition, 3];
}
public override Java.Lang.Object GetGroup (int groupPosition)
{
return groups[groupPosition];
}
public override long GetGroupId (int groupPosition)
{
return groupPosition;
}
public override View GetGroupView (int groupPosition, bool isExpanded, View convertView, ViewGroup parent)
{
string _group = (string)GetGroup(groupPosition);
if(convertView==null)
{
LayoutInflater infalInflater = (LayoutInflater) context.GetSystemService(Context.LayoutInflaterService);
convertView = infalInflater.Inflate(Resource.Layout.group_layout, null);
}
TextView tv = (TextView)convertView.FindViewById(Resource.Id.tvGroup);
tv.SetText(_group, TextView.BufferType.Normal);
return convertView;
}
public override bool IsChildSelectable (int groupPosition, int childPosition)
{
return true;
}
public override int GroupCount {
get {
return groups.Count();
}
}
public override bool HasStableIds {
get {
return true;
}
}
}
How can I retrieve the length of the GetChildrenCount Method? 如何检索GetChildrenCount方法的长度?
To get the length of the groups children it should be: 要获得组孩子的长度,应该是:
public override int GetChildrenCount (int groupPosition)
{
return children[groupPosition].Length;
}
I solve like this, cuz its working: 我这样解决,因为它的工作:
public class ARExpandableListAdapter : BaseExpandableListAdapter
{
private Context context;
private IList<string> groups;
private IList<IAccountsReceivable> children;
public ARExpandableListAdapter(Context context, IList<string> groups, IList<IAccountsReceivable> children)
{
this.context = context;
this.groups = groups;
this.children = children;
}
#region implemented abstract members of Android.Widget.BaseExpandableListAdapter
public override Java.Lang.Object GetChild (int groupPosition, int childPosition)
{
return (Java.Lang.Object)children[groupPosition]; //as Java.Lang.Object.JavaCast<decimal>();
}
public override long GetChildId (int groupPosition, int childPosition)
{
return childPosition;
}
public override View GetChildView (int groupPosition, int childPosition, bool isLastChild, View convertView, ViewGroup parent)
{
if(convertView == null)
{
LayoutInflater infaInflater = (LayoutInflater) context.GetSystemService(Context.LayoutInflaterService);
convertView = infaInflater.Inflate(Resource.Layout.child_layout, null);
}
if(childPosition<6)
{
string label = " ";
if (childPosition == 0)
label = children[groupPosition].TransactionType;
if (childPosition == 1)
label = children[groupPosition].TransactionValue.ToString();
if (childPosition == 2)
label = children[groupPosition].TransactionDate.ToString();
if (childPosition == 3)
label = children[groupPosition].TransactionDueDate.ToString();
if (childPosition == 4)
label = children[groupPosition].OrderNumber.ToString();
if (childPosition == 5)
label = children[groupPosition].CustomerReference;
TextView tv = (TextView) convertView.FindViewById(Resource.Id.tvChild);
tv.SetText(" " + label, TextView.BufferType.Normal);
}
return convertView;
}
public override int GetChildrenCount (int groupPosition)
{
return children.Count;
}
public override Java.Lang.Object GetGroup (int groupPosition)
{
return groups[groupPosition];
}
public override long GetGroupId (int groupPosition)
{
return groupPosition;
}
public override View GetGroupView (int groupPosition, bool isExpanded, View convertView, ViewGroup parent)
{
string _group = (string)GetGroup(groupPosition);
if(convertView==null)
{
LayoutInflater infalInflater = (LayoutInflater) context.GetSystemService(Context.LayoutInflaterService);
convertView = infalInflater.Inflate(Resource.Layout.group_layout, null);
}
TextView tv = (TextView)convertView.FindViewById(Resource.Id.tvGroup);
tv.SetText(_group, TextView.BufferType.Normal);
return convertView;
}
public override bool IsChildSelectable (int groupPosition, int childPosition)
{
return true;
}
public override int GroupCount {
get {
return groups.Count();
}
}
public override bool HasStableIds {
get {
return true;
}
}
#endregion
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.