我有一个ViewPager
我必须更换第一个Fragment
如果某个动作发生。
public static class PagerAdapter extends FragmentStatePagerAdapter{
private TempChannel latestChannel;
private VideosFragment.SortType sortType;
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
if(latestChannel == null) {
return new LatestVideosFragment();
}else{
return VideosFragment.getVideosFragment(latestChannel, sortType);
}
case 1:
return new LiveVideosFragment();
case 2:
return new ConversationsFragment();
}
return null;
}
}
基本上,当我点击频道中的一个频道时LatestVideosFragment
,适配器中的第一个位置应更改为VideosFragment
class.
public void startLatestChannelFragment(TempChannel channel, VideosFragment.SortType sortType){
adapter.setLatestChannel(channel, sortType);
adapter.notifyDataSetChanged();
Log.d("x", "on channel started");
}
我以为打电话notifyDataSetChanged()
适配器上会更新片段,但事实并非如此。也尝试过打电话invalidate(
)在ViewPager
没有任何影响。这Fragment
仅当我转到第三个选项卡然后返回第一个选项卡时才会更新。
检查这里的答案以获得一些好的解决方案:ViewPager PagerAdapter 不更新视图 https://stackoverflow.com/questions/7263291/viewpager-pageradapter-not-updating-the-view
基本上覆盖getItemPosition
在你的PagerAdapter
会给你想要的效果。
public int getItemPosition(Object object) {
return POSITION_NONE;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)