一个总是扩展的MvxExpandableListView

时间:2015-04-01 13:02:51

标签: android xamarin mvvmcross

我正在尝试开发一个总是会扩展的MvxExpandableListView版本。

我写的代码似乎有效,但我很确定我没有以正确的方式做事。我试图找到有关Android Widgets生命周期的一些信息,但只找到有关Activity生命周期的信息。

更具体地说,应该在哪里调用ExpandAll()方法? 我已经尝试了几个地方,最后将它放入OnDraw()处理程序。

为了防止崩溃,我调用了GroupCollapse Handler中的ExpandGroup()方法。嗯,不确定这是否正确。

所以,这是代码:

public class MvxExpandedListView : MvxExpandableListView
{
    private bool _allExpanded = false;

    private void ExpandAll()
    {
        var nbGroups = ThisAdapter.GroupCount;
        for (int i = 0; i < nbGroups; i++)
        {
            ExpandGroup(i);
        }
    }

    private void Init()
    {
        GroupCollapse += MvxExpandableListView_GroupCollapse;
        SetSelector(Android.Resource.Color.Transparent);
        CacheColorHint = Color.Transparent;
        SetGroupIndicator(null);
    }

    public MvxExpandedListView(Context context, IAttributeSet attrs)
        : base(context, attrs)
    {
        Init();
    }

    public MvxExpandedListView(Context context, IAttributeSet attrs, MvxExpandableListAdapter adapter)
        : base(context, attrs, adapter)
    {
        Init();
    }

    protected MvxExpandedListView(IntPtr javaReference, JniHandleOwnership transfer)
        : base(javaReference, transfer)
    {
        Init();
    }


    void MvxExpandableListView_GroupCollapse(object sender, ExpandableListView.GroupCollapseEventArgs e)
    {
        // There must be a better way...    
        this.ExpandGroup(e.GroupPosition);
    }

    protected override void OnDraw(Canvas canvas)
    {
        base.OnDraw(canvas);

        // Ugly !    
        if (!_allExpanded)
        {
            ExpandAll();
            _allExpanded = true;
        }

    }

    public override bool CollapseGroup(int groupPosition)
    {
        return false;
    }

}

先谢谢你的帮助, Kindanam

0 个答案:

没有答案