Триггер 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 жеста
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();
}
}
);