Триггер SwipeRefreshLayout программно
есть ли способ, чтобы вызвать SwipeRefreshLayout
программно? Анимация должна начаться и onRefresh
метод OnRefreshListener
интерфейс должен быть вызван.
4 ответа:
если вы используете новый swipeRefreshLayout intoduced в 5.0
как показано на рисунке выше вам просто нужно добавить следующую строку, чтобы вызвать салфетки обновить макет программно
mSwipeRefreshLayout.post(new Runnable() { @Override public void run() { mSwipeRefreshLayout.setRefreshing(true); } });
если вы просто позвоните
mSwipeRefreshLayout.setRefreshing(true);
это не вызовет круг для анимации, поэтому, добавив выше строку u, просто сделайте задержку в потоке пользовательского интерфейса, чтобы он показывал анимацию круга внутри потока пользовательского интерфейса.
по телефону
mSwipeRefreshLayout.setRefreshing(true)
вOnRefreshListener
будет не выполнитсячтобы остановить круговой вызов анимации загрузки
mSwipeRefreshLayout.setRefreshing(false)
для того чтобы триггер SwipeRefreshLayout Я попытался это решение:
SwipeRefreshLayout.OnRefreshListener swipeRefreshListner = new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { Log.i(TAG, "onRefresh called from SwipeRefreshLayout"); // This method performs the actual data-refresh operation. // The method calls setRefreshing(false) when it's finished. loadData(); } };
Теперь основная часть:
swipeLayout.post(new Runnable() { @Override public void run() { swipeLayout.setRefreshing(true); // directly call onRefresh() method swipeRefreshListner.onRefresh(); } });
вы можете вызвать метод onRefresh() программно, а затем внутри метода запустить анимацию, если она еще не запущена. Смотрите следующее:
@Override public void onRefresh() { if (!mSwipeRefreshLayout.isRefreshing()) mSwipeRefreshLayout.setRefreshing(true); //TODO }
просто чтобы заставить добавить эти два к ennable swipe gesture
swipeRefreshLayout.setOnRefreshListener( new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { Log.i(TAG, "onRefresh called from SwipeRefreshLayout"); // This method performs the actual data-refresh operation. // The method calls setRefreshing(false) when it's finished. FetchData(); } } );