0

私はExpandableListViewを作成しようとしていますが、私はExpandableListAdapterからいくつかのメソッドの情報を取得する方法を知らないので、ここに私のコードです: これは主な活動:私はMono for AndroidでExpandableListViewを作成できますか?

[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

私はこのように解決し、その作業のcuz:

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 

} 
1

それがあるべきグループの子の長さを取得するには、次の

public override int GetChildrenCount (int groupPosition) 
{ 
    return children[groupPosition].Length; 
} 
+0

私はそのbidimetionalアレイのcuz、そのdoenstの仕事をしてくれました – arkmetal

関連する問題