实际显示下一个视图时的Viewflipper侦听器

时间:2011-05-05 02:05:45

标签: android

我有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()

这似乎是一种解决方法,因为我可能并不总是需要动画,所以我的问题是有没有更好的方法来实现这一点,即查看视图何时显示或准备显示?

0 个答案:

没有答案