как обновить макет при пролистывании, чтобы обновить Android

У меня есть представление recycler внутри swipeRefresh каждый раз, когда я пытаюсь прокрутить сверху, вызывается метод swipe to Refresh, и макет обновляется, но я хочу обновить макет только при прокрутке вверх экрана. У кого-нибудь есть ответ на этот вопрос.

Любая помощь приветствуется, спасибо

Мой макет показан ниже.

<android.support.v4.widget.SwipeRefreshLayout
    android:id="@+id/swipe_container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <RelativeLayout
        android:id="@+id/rel"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycler"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@id/toolbar"
            android:scrollbars="vertical" />
    </RelativeLayout>

</android.support.v4.widget.SwipeRefreshLayout>


person dhamini poornachandra    schedule 15.07.2016    source источник
comment
Почему между RecyclerView и SwipeRefreshLayout стоит RelativeLayout? Разве SwipeRefreshLayout не должен быть прямым родителем RecyclerView? см. developer.android.com/training/swipe/add-swipe-interface .html   -  person frozenkoi    schedule 15.07.2016


Ответы (2)


Я решил свою проблему. Мне пришлось изменить код, чтобы он заработал. Теперь лют обновляется при достижении верхней части экрана.

<RelativeLayout
    android:id="@+id/rel"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:layout_collapseMode="pin"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_container"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/toolbar">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycler"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@id/swipe_container"
            android:scrollbars="vertical" />

    </android.support.v4.widget.SwipeRefreshLayout>
</RelativeLayout>
person dhamini poornachandra    schedule 15.07.2016

Используйте setOnRefreshListener метода SwipeRefreshLayout

upload_swipe_refresh_layout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {

            webServiceCall();
            upload_swipe_refresh_layout.setRefreshing(false);
        }
    });

Продолжайте обновлять

upload_swipe_refresh_layout.post(new Runnable() {
    @Override
    public void run() {
        upload_swipe_refresh_layout.setRefreshing(true);
    }
});
person mahesh_babariya    schedule 15.07.2016
comment
Я использую setOnRefreshListener, но проблема возникает каждый раз, когда я пытаюсь прокрутить вверх. в то время как я хочу обновить при достижении верхней части экрана. - person dhamini poornachandra; 15.07.2016
comment
тогда вы можете держать его освежающим все время - person mahesh_babariya; 15.07.2016