【发布时间】:2016-04-29 09:50:17
【问题描述】:
我正在构建一个使用 Viewpager 和 FragmentStatePagerAdapter 的应用程序。 FragmentStatePagerAdapter 获取一个对象数组,稍后用于将每个对象数据映射到一个片段。
适配器将 3 个片段加载到内存中(我在页面上时调用了 3 次 onCreateView),它加载当前片段和接下来的两个片段。
我有以下问题:
我必须根据我所在的当前片段的内容变化来改变下一个片段的内容。
我尝试修改 FragmentStatePagerAdapter 中的数组,然后在适配器上调用 notifydatasetchanged,但适配器没有再次加载下一页。
最好的方法是什么?
一些代码和场景: 我所在的当前片段包含用户数据,登录的用户可以关注他或取消关注。
这是 onClick 代码:
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();
}
下一页包含相同的用户。
所以如果我在当前页面上关注他,我希望下一页的关注按钮显示“取消关注”
【问题讨论】:
-
发布您的代码,尝试什么
-
您可以尝试片段的 setArgument() 方法。捆绑名称=新捆绑(); name.putCharSequence("你的钥匙","你的价值"); fragment.setArguments(name);
-
我已经在这样做以在适配器中实例化片段
-
这就是我传递对象数据的方式
标签: android android-viewpager fragmentstatepageradapter