我有一个Selected Product : Headphones , Mouse , Keyboard(with backlight)
Payment Gateway: Credit Card
,Fragment
处理三个ViewPager
。第一个包含Fragment
。这是一些代码:
FragmentViewPager
RecyclerView
FragmentPagerAdapter
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_player_view_pager, container, false);
ViewPager vpPager = (ViewPager) view.findViewById(R.id.playerViewPager);
adapterViewPager = new PlayerPagerAdapter(getFragmentManager());
vpPager.setAdapter(adapterViewPager);
return view;
}
FirstFragment :
// Returns the fragment to display for that page
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return FirstFragment.newInstance("0", "Page # 1");
case 1:
return SecondFragment.newInstance("1", "Page # 2");
case 2:
return ThirdFragment.newInstance("2", "Page # 3");
default:
return null;
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_first, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
adapter = new FragmentAdapter(getActivity(), myList);
recyclerView.setItemAnimator(new SlideInUpAnimator(new OvershootInterpolator(1f)));
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
recyclerView.setAdapter(adapter);
loadData();
return view;
}
方法是通过loadData
填充适配器的API调用。这是onPostExecute方法:
AsyncTask
问题是当我第一次实例化myList = (ArrayList<>) result;
adapter.notifyDataSetChanged();
时,即使是API调用,也会在第一个ViewPager
中显示任何内容,并调用Fragment
方法。但是,如果我在其他片段之间滚动并且notifyDataSetChanged()
重新创建FirstFragment
,则会显示数据。
你知道这里发生了什么吗?
答案 0 :(得分:2)
获取FragmentAdapter的响应更新数据myList(ArrayList&lt;&gt;)后,通过您创建的任何方法,然后调用Adapter的notifyDataSetChanged()方法。
myList =(ArrayList&lt;&gt;)结果; 此初始化未反映在FragmentAdapter ArrayList
上答案 1 :(得分:1)
adapterViewPager = new PlayerPagerAdapter(getChildFragmentManager());
您已经进入了一个片段,因此您需要获取片段管理器的片段实例。