検索

ホームページ  >  に質問  >  本文

android - ViewPager+Fragment,某个Fragment里面的一条数据发生变化,如何局部刷新这条数据

ViewPager+Fragment,某个Fragment里面的一条数据发生变化,如何局部刷新这条数据

高洛峰高洛峰2772日前671

全員に返信(4)返信します

  • 巴扎黑

    巴扎黑2017-04-17 17:44:05

    ViewPagerの項目がFragmentの場合、通常はAdapterとしてFragmentPagerAdapterが使用され、Fragmentを追加する際にこのクラスがタグを追加します。ソース内のFragmentPagerAdapterメソッドinstantiateItem()を参照してください。

    のコード リーリー

    このタグは makeFragmentName() のプライベート メソッドを通じて取得されますが、必要なのはこのメソッドを直接コピーすることだけです。このメソッドのパラメーター viewId は ViewPager の ID である必要があり、itemId は getItemId() メソッドです。アダプターのタグを自分で組み立てて、フラグメントを取得できます。
    これで完了です。

    返事
    0
  • ringa_lee

    ringa_lee2017-04-17 17:44:05

    RecyclerView を使用すると、次のように Eventbus を使用できます

    リーリー

    返事
    0
  • ringa_lee

    ringa_lee2017-04-17 17:44:05

    私もこの問題についてしばらく考えていましたが、検索した結果、適切な解決策が見つかりませんでした。pagerfragmentadapter は、対応するフラグメントを取得するための API を提供していないようです。
    インデックス内に弱参照のリストを作成し、フラグメントの初期化時にアダプターに追加してから、アダプターの onDestroyItem (おそらくこれと呼ばれた?思い出せません) を書き換えて、リスト内の対応するエントリを削除しました。ここ。
    フラグメントインスタンスを取得した後は、自由に操作できます。

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:44:05

    1. フラグメントがフォアグラウンドにある場合、LocalBroadcastManager / EventBus / otto / Rx を使用してイベント (メッセージ) をサブスクライブできます

    2. フラグメントがバックグラウンドに切り替わったら、サブスクリプションをキャンセルし、フラグメントが再びフォアグラウンドに切り替わったら、ページ データを更新して再サブスクライブします

    返事
    0
  • キャンセル返事