2012-05-08 4 views
3

Android 용 Mono와 함께 BaseExpandableListAdapter를 사용하는 예가 누구에게 있습니까? 내 견해 중 하나에 대해이를 구현하려고하지만 철저한 것을 찾는 데 문제가 있습니다. Android 용 Mono를 사용하는 방법에 대한 예를 제공 할 수 있습니까?Android 용 모노 및 BaseExpandableListAdapter 예

답변

2

사용자 정의 가능한 확장형 목록 어댑터를 사용하는 것은보기에 어렵지만 실용적인 예입니다. 각 항목이 확장되어 그 아래에 항목 목록을 표시하므로 데이터 소스를 목록 목록으로 생각할 수 있습니다.

public class MyAdapter : BaseExpandableListAdapter 
{ 
    private readonly Context _context; 
    private readonly IList<Group> _groups; 

    public MyAdapter(Context context, IList<Group> groups) 
    { 
     _context = context; 
     _groups = groups; 
    } 

    public override Java.Lang.Object GetChild(int groupPosition, int childPosition) 
    { 
     return _groups[groupPosition].Items[childPosition]; 
    } 

    public override long GetChildId(int groupPosition, int childPosition) 
    { 
     return (groupPosition * _groups.Count) + childPosition; 
    } 

    public override View GetChildView(int groupPosition, int childPosition, bool isLastChild, View convertView, ViewGroup parent) 
    { 
     var view = (TextView)(convertView ?? new TextView(_context)); 

     view.Text = _groups[groupPosition].Items[childPosition]; 

     return view; 
    } 

    public override int GetChildrenCount(int groupPosition) 
    { 
     return _groups[groupPosition].Items.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) 
    { 
     var view = (TextView)(convertView ?? new TextView(_context)); 

     view.Text = _groups[groupPosition].Name; 

     return view; 
    } 

    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; } 
    } 
} 

생성자 : 당신이 다음 BaseExpandableListAdapter에서 상속하고 필요한 모든 방법/속성을 구현하는 클래스를 만들 수 있습니다 모델을 사용

public class Group : Java.Lang.Object 
{ 
    public string Name { get; set; } 
    public IList<string> Items { get; set; } 
} 

: 그 표현하기 위해, 우리는이 간단한 모델을 사용합니다 어댑터는 그룹 목록을 가져 와서 그룹, 항목 등을 요구하는 메소드를 구현하는 데 사용합니다. 각 뷰에 대해 단순한 TextView를 렌더링하는 것이지만 간단하게 만들거나 늘릴 수 있습니다 항목에 대해 원하는보기. 내가 필요 정확히처럼 보이는

[Activity(Label = "ExpandableListDemo", MainLauncher = true, Icon = "@drawable/icon")] 
public class MyExpandableListActivity : ExpandableListActivity 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     var groups = new List<Group> 
         { 
          new Group 
           { 
            Name = "Group 1", 
            Items = new List<string> { "Item 1.1", "Item 1.2", "Item 1.3" } 
           }, 
          new Group 
           { 
            Name = "Group 2", 
            Items = new List<string> { "Item 2.1", "Item 2.2", "Item 2.3" } 
           } 
         }; 

     var adapter = new MyAdapter(this, groups); 

     SetListAdapter(adapter); 
    } 
} 
+0

을 :

행동이를 보여주기 위해 여기에 몇 가지 데이터로 확장 목록을로드 샘플 활동입니다. 나는 어댑터를 가지고있는 것에 가깝지만, 당신의 접근 방식은 내가 시도한 복잡한 단계보다 더 깔끔하고, 표준 활동을 통해 모든 것을하려고 노력했다. 도와 줘서 고마워, 그렉! –

관련 문제