2016-04-29 16 views
0

私はFragmentStatePagerAdapterでViewpagerを使用してアプリケーションを構築しています。 FragmentStatePagerAdapterオブジェクト魔女のアレイは、後に断片に各オブジェクトデータをマップするために使用されます。メモリへアンドロイドViewPager FragmentStatePagerAdapter問題

アダプタ負荷3つの断片(私はページ上だときonCreateViewが3回呼び出される)、それが現在のフラグメントと次の二つをロードします。

私は、次のような問題があります。私は、私がいるよ、現在のフラグメントの内容の変化に基づいて次のフラグメントの内容を変更する必要があります

私は配列を変更しようとしましたFragmentStatePagerAdapterを呼び出し、アダプターでnotifydatasetchangedを呼び出しますが、アダプターは次のページを再びロードしません。

これをやってのけるするための最良の方法は何ですか?

いくつかのコードとシナリオ: 私は日午前現在のフラグメントは、ユーザーのデータが含まれ、ログオンしているユーザーは、彼に従うか、アンフォローすることができます。ビューページでの活動で、リスナーからの

if(mListener!=null) 
         mListener.onTweetUserFollowingStatusChanged(tweet.getUser()); 

コールバック:

@Override 
    public void onTweetUserFollowingStatusChanged(User user) { 
     DataManager.getInstance().onTweetUserFollowStatusChanged(user); 
     List<Tweet> affectedTweets = mPagerAdapter.getTweetsWithUser(user); 
     for (Tweet affectedTweet: affectedTweets 
       ) { 
      boolean affectedTweetCurrentUserFollowStats = affectedTweet.isFollowingTweetUser(); 
      affectedTweet.setFollowingTweetUser(!affectedTweetCurrentUserFollowStats); 
     } 
     mPagerAdapter.notifyDataSetChanged(); 
    } 

次のページが同じユーザをcontaines

は、ここでのonClickコードです。

私は海流のページに彼に従うのであれば、私は、次のページからのフォローボタンが、私は解決策を見つけた

+0

あなたのコードを投稿し、どのようなあなたの試みはあなたがフラグメントのためのsetArgument()メソッドを試すことができ –

+0

。バンドル名=新しいバンドル(); name.putCharSequence( "あなたのキー"、 "あなたの値"); fragment.setArguments(name); –

+0

私はすでにアダプタ – Heixss

答えて

0

を「フォロー」を表示します。

オリジナルの問題は:

FragmentStateAdapterで配列を更新した後、私はアダプターで既にインスタンスフラグメントのUIを更新するための方法が必要でした。

FragmentStateAdapterで配列を更新した後、notifyDataSetChange()を呼び出してこのコードをアダプタに追加するだけです。

mPagerAdapter.registerDataSetObserver(new DataSetObserver() { 
      @Override 
      public void onChanged() { 
       super.onChanged(); 

       FragmentStatePagerAdapter fragmentPagerAdapter = (FragmentStatePagerAdapter) VP_tweets.getAdapter(); 
       for(int i = 0; i < fragmentPagerAdapter.getCount(); i++) { 
        TweetFragment viewPagerFragment = (TweetFragment) VP_tweets.getAdapter().instantiateItem(VP_tweets, i); 
        if(viewPagerFragment != null && viewPagerFragment.isAdded()) { 
         viewPagerFragment.updateUI(); 
        } 
       } 
      } 

     });