我有2个ExpandableListViews,我正在使用ViewFlipper使用fling动作在它们之间切换。我的鳍状肢布局看起来像这样
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<ViewFlipper
android:id="@+id/flipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/view1"
android:orientation="vertical">
<ExpandableListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"/>
<ImageView
android:id="@id/android:empty"
android:src="@drawable/logo">
</ImageView>
</LinearLayout>
<LinearLayout
android:id="@+id/view2"
android:orientation="vertical">
<ExpandableListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"/>
<ImageView
android:id="@id/android:empty"
android:src="@drawable/logo">
</ImageView>
</LinearLayout>
</ViewFlipper>
</LinearLayout>
每当视图切换到时,我想自动展开列表中的第一个组 所以我切换到下一个视图,然后如果视图中有任何组,我会展开第一个组。像这样的东西
public void switchNextView(){
flipper.showNext();
expandFirstGroup();
}
public void expandFirstGroup(){
LinearLayout layout = (LinearLayout)flipper.getCurrentView();
ExpandableListView view = (ExpandableListView)layout.getChildAt(0);
if(view.getChildCount() > 0){
view.expandGroup(0);
}
}
现在问题是getChildCount()总是在我第一次切换到下一个视图时返回0,这个视图告诉我此时尚未将组添加到ExpandableListView
为了确定视图何时实际上“准备好”,我创建了一个AnimationListener并在onAnimationEnd()中调用了expandFirstGroup()
这似乎是一种解决方法,因为我可能并不总是需要动画,所以我的问题是有没有更好的方法来实现这一点,即查看视图何时显示或准备显示?