Есть ли способ запустить программный код SwipeRefreshLayout
? Анимация должна начинаться, и метод onRefresh
из интерфейса OnRefreshListener
должен быть вызван.
SwipeRefreshLayout запускается программно
Ответ 1
если вы используете новый swipeRefreshLayout, встроенный в 5.0
В качестве изображения, показанного выше, вам просто нужно добавить следующую строку, чтобы программный макет обновления прокрутки
mSwipeRefreshLayout.post(new Runnable() {
@Override
public void run() {
mSwipeRefreshLayout.setRefreshing(true);
}
});
если вы просто вызываете
mSwipeRefreshLayout.setRefreshing(true);
он не активирует круг для анимации, поэтому, добавив вышеприведенную строку u, просто задерживайте поток пользовательского интерфейса, чтобы он отображал анимацию окружения внутри нити ui.
Вызывая mSwipeRefreshLayout.setRefreshing(true)
, OnRefreshListener
будет НЕ выполняться
Чтобы остановить круговой анимационный вызов вызова mSwipeRefreshLayout.setRefreshing(false)
Ответ 2
Чтобы запустить 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 finished.
loadData();
}
};
Теперь:
swipeLayout.post(new Runnable() {
@Override public void run() {
swipeLayout.setRefreshing(true);
// directly call onRefresh() method
swipeRefreshListner.onRefresh();
}
});
Ответ 3
Просто для того, чтобы добавить это два к объявляемому жестом салфетки
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 finished.
FetchData();
}
}
);
Ответ 4
Вы можете вызвать метод onRefresh() программно, а затем внутри метода запустить анимацию, если она еще не запущена. См. Следующее:
@Override
public void onRefresh() {
if (!mSwipeRefreshLayout.isRefreshing()) mSwipeRefreshLayout.setRefreshing(true);
//TODO
}