我正在尝试开发一个总是会扩展的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