プログラムでSwipeRefreshLayout
をトリガーする方法はありますか?アニメーションが開始され、onRefresh
インターフェイスからのOnRefreshListener
メソッドが呼び出されます。
5.0で導入された新しいswipeRefreshLayoutを使用している場合
上記の画像のように、次の行を追加するだけで、プログラムでスワイプ更新レイアウトをトリガーできます。
_ mSwipeRefreshLayout.post(new Runnable() {
@Override
public void run() {
mSwipeRefreshLayout.setRefreshing(true);
}
});
_
単に電話する場合
_ mSwipeRefreshLayout.setRefreshing(true);
_
円のアニメーションをトリガーしないため、上記の行uを追加することでUIスレッドに遅延を加えて、UIスレッド内に円のアニメーションを表示します。
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();
}
});
スワイプジェスチャーを有効にするためにこの2つを追加することを強制するだけです
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();
}
}
);
OnRefresh()メソッドをプログラムで呼び出して、メソッド内でアニメーションを開始できます(まだ開始されていない場合)。以下を参照してください。
@Override
public void onRefresh() {
if (!mSwipeRefreshLayout.isRefreshing()) mSwipeRefreshLayout.setRefreshing(true);
//TODO
}