остановить триггер SwipeRefreshLayout программно

Я исследовал, как запустить Android SwipeRefreshLayout программно. Я нашел этот веб-сайт, где объясняется, как это сделать.

Вот код, как я запускаю анимацию:

mSwipeRefreshLayout.post(new Runnable() {
            @Override
            public void run() {
                mSwipeRefreshLayout.setRefreshing(true);
            }
        }); 

BТеперь я хотел бы остановить анимацию SwipeRefreshLayout при загрузке данных.

Код

mSwipeRefreshLayout.setRefreshing(false);

не работает для меня.

У кого-нибудь есть идея?


person jublikon    schedule 11.11.2015    source источник
comment
Вызываете ли вы оба метода setRefreshing(bool) в одном и том же экземпляре макета обновления смахивания? Код, который вы написали, верен, чтобы остановить обновление смахивания.   -  person Matt Davis    schedule 11.11.2015
comment
У меня есть глобальная переменная с именем mSwipeRefreshLayout. Так что я думаю, что это должен быть тот же экземпляр   -  person jublikon    schedule 11.11.2015


Ответы (1)


mSwipeRefreshLayout.setRefreshing(true); не запускает прослушиватель onRefresh(). Он показывает только анимацию. Я предполагаю, что вы вызываете mSwipeRefreshLayout.setRefreshing(false); в результате чего-то, что происходит в вашем обработчике обновления.

Решение состоит в том, чтобы вызвать метод обновления вручную из файла Runnable.

mSwipeRefreshLayout.post(new Runnable() {
    @Override
    public void run() {
        mSwipeRefreshLayout.setRefreshing(true);
        myRefreshMethod();
    }
});
person Breavyn    schedule 11.11.2015