更新リクエストに応答する

このドキュメントでは、ユーザーが手動作成をリクエストした場合にアプリを更新する方法について説明します。 スワイプ操作やアクションバーを使用した更新のどちらでトリガーしても、 更新します。

更新操作に応答する

ユーザーが「スワイプして更新」操作を行うと、 進行状況インジケーターを呼び出し、アプリのコールバック メソッドを呼び出します。コールバック メソッド: アプリのデータを更新します。

アプリで更新操作に応答するには、 SwipeRefreshLayout.OnRefreshListener インターフェースと onRefresh() メソッドを呼び出します。onRefresh() メソッドは、ユーザーが次の操作を行うと呼び出されます。 スワイプ操作。

実際の更新操作用のコードを別のメソッドに配置します。できれば、 を ViewModel で指定し、その更新メソッドを onRefresh() の実装。そうすれば、同じ更新を ユーザーがアクションから更新をトリガーしたときに更新を実行するメソッドです。 表示されます。

update メソッドで、次を呼び出します。 setRefreshing(false) データの更新が完了すると トリガーされますこのメソッドを呼び出すと、 SwipeRefreshLayout 進行状況インジケーターを削除してビューの内容を更新します。

たとえば、次のコードは onRefresh() を実装し、 メソッド myUpdateOperation() を呼び出して、表示されているデータを更新します。 作成者: ListView:

Kotlin

// Sets up a SwipeRefreshLayout.OnRefreshListener that invokes when
// the user performs a swipe-to-refresh gesture.

mySwipeRefreshLayout.setOnRefreshListener {
    Log.i(LOG_TAG, "onRefresh called from SwipeRefreshLayout")

    // This method performs the actual data-refresh operation and calls
    // setRefreshing(false) when it finishes.
    myUpdateOperation()
}

Java

// Sets up a SwipeRefreshLayout.OnRefreshListener that is invoked when
// the user performs a swipe-to-refresh gesture.

mySwipeRefreshLayout.setOnRefreshListener(() -> {
    Log.i(LOG_TAG, "onRefresh called from SwipeRefreshLayout");

    // This method performs the actual data-refresh operation and calls
    // setRefreshing(false) when it finishes.
    myUpdateOperation();
  }
);

更新アクションに応答する

ユーザーがアクションバーを使用して更新をリクエストすると、システムは onOptionsItemSelected() メソッドを呼び出します。アプリはこの呼び出しに応答して、進行状況インジケーターを表示して、 アプリのデータを更新します。

更新アクションに応答するには、 onOptionsItemSelected()。オーバーライド メソッドで、 呼び出しによる SwipeRefreshLayout の進行状況インジケーター setRefreshing() を値 true に置き換えてから、 実行されます。実際の更新は別のメソッドで実行します。これにより、 メソッドは、ユーザーがスワイプで更新をトリガーするか、 クリックします。更新が完了したら、setRefreshing(false) を呼び出します。 更新進行状況インジケーターを削除できます。

次のコードは、リクエスト アクションに応答する方法を示しています。

Kotlin

// Listen for option item selections to receive a notification when the user
// requests a refresh by selecting the refresh action bar item.

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.itemId) {

        // Check whether the user triggers a refresh:
        R.id.menu_refresh -> {
            Log.i(LOG_TAG, "Refresh menu item selected")

            // Signal SwipeRefreshLayout to start the progress indicator.
            mySwipeRefreshLayout.isRefreshing = true

            // Start the refresh background task. This method calls
            // setRefreshing(false) when it finishes.
            myUpdateOperation()

            return true
        }
    }

    // User doesn't trigger a refresh. Let the superclass handle this action.
    return super.onOptionsItemSelected(item)
}

Java

// Listen for option item selections to receive a notification when the user
// requests a refresh by selecting the refresh action bar item.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

        // Check whether the user triggers a refresh:
        case R.id.menu_refresh:
            Log.i(LOG_TAG, "Refresh menu item selected");

            // Signal SwipeRefreshLayout to start the progress indicator.
            mySwipeRefreshLayout.setRefreshing(true);

            // Start the refresh background task. This method calls
            // setRefreshing(false) when it finishes.
            myUpdateOperation();

            return true;
    }

    // User doesn't trigger a refresh. Let the superclass handle this action.
    return super.onOptionsItemSelected(item);
}