recyclerview定期的なUIの子の更新

johnny_crq

WSから取得したゲームの期間のタイムスタンプを(とりわけ)含むアイテムのrecyclerViewがあります。試合の期間を表示するには、現在のタイムスタンプを取得し、マットを作成して、読み取り可能な形式に変換する必要があります(例:5分5秒)。一部のビューのみを更新する必要があります。

各チャイルドビューは、xxx秒ごとに更新する必要があります。

  • 私の最初のアプローチは、更新が必要なビューにバインドされたオブジェクトのリストを作成することでした。私のフラグメントでは、ハンドラーを宣言し、リスト内のすべてのオブジェクトに対してnotifyItemChanged(position)を呼び出します。ハンドラーがnotifyItemChangedを呼び出すたびに、ビュー全体が再レンダリングされ、小さな点滅効果があります。私はそれを起こしたくないので、私の2番目のアプローチは、更新が必要なすべてのchildViewのTextViewのみを変更することでした。コードは次のとおりです。

    @Override
        public void onBindViewHolder(MyViewHolder holder, int position) {
    if (needsUpdate) {
                holder.startRepeatingTask();
            } else {
                holder.stopRepeatingTask();
            }
    }
    class MyViewHolder extends RecyclerView.ViewHolder {
            private final int mHandlerInterval = 6000;
            private Handler mHandler;
            private Runnable mStatusChecker;
    
    public MyViewHolder(View itemView) {
                super(itemView);
                ButterKnife.inject(this, itemView);
                mHandler = new Handler();
                mStatusChecker = new Runnable() {
                    @Override
                    public void run() {
                        String gameStatusToPrint = current.getGameStatusToPrint();
                        gameStatus.setText(gameStatusToPrint);
                        mHandler.postDelayed(mStatusChecker, mHandlerInterval);
                    }
                };
            }
    
      public void startRepeatingTask() {
                mStatusChecker.run();
      }
    
      public void stopRepeatingTask() {
                mHandler.removeCallbacks(mStatusChecker);
      }
    }
    

これが最善のアプローチであるかどうかはわかりませんが、これに関する推奨事項が必要です。

mmark

ViewHolderはRecyclerViewによってリサイクルされる予定です。「現在のゲーム」とリストに表示されているアイテムの間の安定性を維持していることを確認する必要があります。それにもかかわらず、私はあなたの解決策は大丈夫だと思います。

そのための修正は次のとおりです。

@Override
    public void onBindViewHolder(MyViewHolder holder, int position) {

        holder.game = mGameList.get(position);
        if (needsUpdate) {
            holder.startRepeatingTask();
        } else {
            holder.stopRepeatingTask();
        }
    }

    class MyViewHolder extends RecyclerView.ViewHolder {
        private final int mHandlerInterval = 6000;
        private Handler mHandler;
        private Runnable mStatusChecker;

        public Game game;

        public MyViewHolder(View itemView) {
            super(itemView);
            ButterKnife.inject(this, itemView);
            mHandler = new Handler();
            mStatusChecker = new Runnable() {
                @Override
                public void run() {
                    String gameStatusToPrint = game.getGameStatusToPrint();
                    gameStatus.setText(gameStatusToPrint);
                    mHandler.postDelayed(mStatusChecker, mHandlerInterval);
                }
            };
        }

        public void startRepeatingTask() {
            mStatusChecker.run();
        }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

定期的な更新と作成、更新、削除操作の同期

分類Dev

親(画面)クラスのUIを子(BoxLayout)クラスから定期的に更新する方法(PythonとKivy)

分類Dev

RecyclerView.ViewHolderの部分的な更新

分類Dev

RecyclerView.ViewHolderの部分的な更新

分類Dev

RecyclerView.ViewHolderの部分的な更新

分類Dev

RecyclerView.ViewHolderの部分的な更新

分類Dev

RecyclerView.ViewHolderの部分的な更新

分類Dev

RecyclerView.ViewHolderの部分的な更新

分類Dev

ESP32Webサーバーの定期的な更新の問題

分類Dev

JavaScript-データの生成と定期的な更新

分類Dev

Hangfireの定期的なタスク

分類Dev

iOSのバックグラウンドロケーションの定期的な更新

分類Dev

turn.jsを使用した本の動的ページの定期的な更新

分類Dev

クラスメンバーへの定期的な更新のスレッド化

分類Dev

定期的に完全なデータを更新するのはなぜですか?

分類Dev

RecyclerViewの子の数は子の数よりも少なくなります

分類Dev

RecyclerViewアダプタのnotifyDataSetChangedがRecyclerViewを更新しない

分類Dev

Lightstep:子スパンの不正確なUI

分類Dev

Androidの融合された場所は定期的な更新を配信しません

分類Dev

子の小道具が更新されない

分類Dev

F#とWPF:基本的なUIの更新

分類Dev

ページ更新時の別のui-viewの子であるui-viewでng-enterがトリガーされない

分類Dev

DjangoCeleryの定期的なタスクの例

分類Dev

JPA更新の親子

分類Dev

定期的な更新の戦略としてのテーブルの切り捨てと上書き

分類Dev

Cの子プロセスによって読み取られたパイプへの定期的な書き込み

分類Dev

データバインディングを使用してrecyclerviewでUIの更新に失敗することがあるのはなぜですか?

分類Dev

ワークマネージャーを使用したAndroidの定期的な位置情報の更新

分類Dev

3つのグループで定期的なデータを入力するためのT-SQL更新クエリ

Related 関連記事

  1. 1

    定期的な更新と作成、更新、削除操作の同期

  2. 2

    親(画面)クラスのUIを子(BoxLayout)クラスから定期的に更新する方法(PythonとKivy)

  3. 3

    RecyclerView.ViewHolderの部分的な更新

  4. 4

    RecyclerView.ViewHolderの部分的な更新

  5. 5

    RecyclerView.ViewHolderの部分的な更新

  6. 6

    RecyclerView.ViewHolderの部分的な更新

  7. 7

    RecyclerView.ViewHolderの部分的な更新

  8. 8

    RecyclerView.ViewHolderの部分的な更新

  9. 9

    ESP32Webサーバーの定期的な更新の問題

  10. 10

    JavaScript-データの生成と定期的な更新

  11. 11

    Hangfireの定期的なタスク

  12. 12

    iOSのバックグラウンドロケーションの定期的な更新

  13. 13

    turn.jsを使用した本の動的ページの定期的な更新

  14. 14

    クラスメンバーへの定期的な更新のスレッド化

  15. 15

    定期的に完全なデータを更新するのはなぜですか?

  16. 16

    RecyclerViewの子の数は子の数よりも少なくなります

  17. 17

    RecyclerViewアダプタのnotifyDataSetChangedがRecyclerViewを更新しない

  18. 18

    Lightstep:子スパンの不正確なUI

  19. 19

    Androidの融合された場所は定期的な更新を配信しません

  20. 20

    子の小道具が更新されない

  21. 21

    F#とWPF:基本的なUIの更新

  22. 22

    ページ更新時の別のui-viewの子であるui-viewでng-enterがトリガーされない

  23. 23

    DjangoCeleryの定期的なタスクの例

  24. 24

    JPA更新の親子

  25. 25

    定期的な更新の戦略としてのテーブルの切り捨てと上書き

  26. 26

    Cの子プロセスによって読み取られたパイプへの定期的な書き込み

  27. 27

    データバインディングを使用してrecyclerviewでUIの更新に失敗することがあるのはなぜですか?

  28. 28

    ワークマネージャーを使用したAndroidの定期的な位置情報の更新

  29. 29

    3つのグループで定期的なデータを入力するためのT-SQL更新クエリ

ホットタグ

アーカイブ