gpt4 book ai didi

android - ViewPager 为所有页面显示相同的 ListFragments

转载 作者:行者123 更新时间:2023-11-29 21:51:31 24 4
gpt4 key购买 nike

我正在尝试使用 FragmentPagerAdapter 将 ListFragment 与 ViewPager 结合使用。寻呼机由 ListFragment 的两个实例组成。 ViewPager 控件可以工作并允许我在 fragment 之间滑动,但是两个页面中都会出现相同的 ListFragment。似乎 ViewPager 的 getItem() 方法创建了 ListFragment 的两个不同实例,但它只为两个页面显示它的第二个实例。这是一个代码:

// FragmentPagerAdapter
private static class MyFragmentPagerAdapter extends FragmentPagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int index) {
Log.i("Page: ", index + "");
return PageFragment.newInstance(pages.get(index));
// pages is an ArrayList<ArrayList<Restaurant>> pages
}

@Override
public int getCount() {
return numberOfPages;
}
}


// ListFragment
public class PageFragment extends ListFragment {

private static ArrayList<Restaurant> restaurantsList;

public static PageFragment newInstance(ArrayList<Restaurant> restaurantsList) {
PageFragment pageFragment = new PageFragment();
pageFragment.setRestaurantsList(restaurantsList);
return pageFragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
setListAdapter(new RestaurantArrayAdapter(getActivity().getBaseContext(), getRestaurantsList()) );
return view;
}


private void setRestaurantsList(ArrayList<Restaurant> list)
{
restaurantsList = list;
}

private ArrayList<Restaurant> getRestaurantsList()
{
return this.restaurantsList;
}
}

最佳答案

好吧,伙计,问题是您已将数组成员声明为“静态”,

private static ArrayList<Restaurant> restaurantsList;

消除静电,您应该没问题。

关于android - ViewPager 为所有页面显示相同的 ListFragments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14297689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com