我正在尝试创建一个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);
}
}
这是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;
}
}
}
如何检索GetChildrenCount方法的长度?
答案 0 :(得分:1)
要获得儿童组的长度,应该是:
public override int GetChildrenCount (int groupPosition)
{
return children[groupPosition].Length;
}
答案 1 :(得分:0)
我这样解决,因为它的工作:
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
}