bingoogolapple / BGARefreshLayout-Android

多种下拉刷新效果、上拉加载更多、可配置自定义头部广告位
4.31k stars 1k forks source link

可以自己指定mContentView #55

Open tianci opened 8 years ago

tianci commented 8 years ago
@Override
    public void onFinishInflate() {
        super.onFinishInflate();

        if (getChildCount() != 2) {
            throw new RuntimeException(BGARefreshLayout.class.getSimpleName() + "必须有且只有一个子控件");
        }

        mContentView = getChildAt(1);
        if (mContentView instanceof AbsListView) {
            mAbsListView = (AbsListView) mContentView;
        } else if (mContentView instanceof RecyclerView) {
            mRecyclerView = (RecyclerView) mContentView;
        } else if (mContentView instanceof ScrollView) {
            mScrollView = (ScrollView) mContentView;
        } else if (mContentView instanceof WebView) {
            mWebView = (WebView) mContentView;
        } else if (mContentView instanceof BGAStickyNavLayout) {
            mStickyNavLayout = (BGAStickyNavLayout) mContentView;
            mStickyNavLayout.setRefreshLayout(this);
        } else {
            mNormalView = mContentView;
            // 设置为可点击,否则在空白区域无法拖动
            mNormalView.setClickable(true);
        }
    }

我看到mContentView = getChildAt(1);,所以如果需要在数据加载出错的时候切换另一个视图,这个视图也支持下拉刷新的话,就没法使用如下布局了:

<cn.bingoogolapple.refreshlayout.BGARefreshLayout
        android:id="@+id/fragment_rotate_header_with_view_group_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ListView
                android:id="@+id/net_result"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:divider="@android:color/transparent"
                android:dividerHeight="0dp"
                android:gravity="center"
                android:scrollbars="none"
                tools:listitem="@layout/item_rtsp_models"
                />

            <LinearLayout
                android:id="@+id/net_progress"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:orientation="vertical">

                <ProgressBar
                    style="?android:attr/progressBarStyle"
                    android:layout_width="200dip"
                    android:layout_height="wrap_content"
                    android:indeterminate="true"
                    android:indeterminateOnly="true"
                    android:visibility="gone"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:text="数据正在加载中……"
                    android:textColor="#000000"
                    android:visibility="gone"/>
            </LinearLayout>

            <LinearLayout
                android:id="@+id/net_no_result"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:background="@android:color/transparent"
                android:orientation="vertical">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:background="@android:color/transparent"
                    android:src="@mipmap/no_live"
                    />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginTop="@dimen/height_720_1280_40"
                    android:text="没有数据"
                    android:textColor="#000000"/>

            </LinearLayout>

        </FrameLayout>

    </cn.bingoogolapple.refreshlayout.BGARefreshLayout>

而必须写成:

<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <cn.bingoogolapple.refreshlayout.BGARefreshLayout
            android:id="@+id/fragment_rotate_header_with_view_group_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ListView
                android:id="@+id/net_result"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:divider="@android:color/transparent"
                android:dividerHeight="0dp"
                android:gravity="center"
                android:scrollbars="none"
                tools:listitem="@layout/item_rtsp_models"
                />

        </cn.bingoogolapple.refreshlayout.BGARefreshLayout>

        <LinearLayout
            android:id="@+id/net_progress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="vertical">

            <ProgressBar
                style="?android:attr/progressBarStyle"
                android:layout_width="200dip"
                android:layout_height="wrap_content"
                android:indeterminate="true"
                android:indeterminateOnly="true"
                android:visibility="gone"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="数据正在加载中……"
                android:textColor="#000000"
                android:visibility="gone"/>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/net_no_result"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@android:color/transparent"
            android:orientation="vertical">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:background="@android:color/transparent"
                android:src="@mipmap/no_live"
                />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginTop="@dimen/height_720_1280_40"
                android:text="没有数据"
                android:textColor="#000000"/>

        </LinearLayout>

    </FrameLayout>

而这会导致一个问题,就是切换到没有数据页面的时候,没有下拉更新的效果了。 所以可以改成手动指定mContentView吗?

bingoogolapple commented 8 years ago

@tianci 其实这个之前有想过,只是还没加上去