在自定义PagerAdapter中膨胀ListView会使setAdapter调用无效

时间:2018-05-02 13:32:27

标签: android listview android-arrayadapter layout-inflater android-pageradapter

我尝试创建自定义PagerAdapter,因为我想显示一些页面,其中每个页面都包含ListView,应由寻呼机适配器构造函数MyPagerAdapter初始化,收到使用Activity的{​​{1}}和字符串ViewPager列表。

问题是调用entries的{​​{1}}似乎无效,列表视图显示为空。

这是我尝试初始化setAdapter(myListAdapter)

的代码段
ListView

有人可以解释我为什么会发生这种情况以及如何解决错误?

  • 条目列表不为空。
  • ListView有几页,但在这里我只显示相对于第一页的列表。
  • 该问题与xml无关,因为如果我尝试直接从活动中填充它。
  • 我可以自己谷歌查看ViewPager教程。问题与问题有关,答案应该与问题本身有关。 因此,如果您的答案没有解释为什么listView无法用所描述的方法填充项目它是偏离主题的,我不会接受它。

1 个答案:

答案 0 :(得分:0)

您必须使用 FragmentStatePagerAdapter ,而不是直接使用Pageradapter类中的控制器。即:

public class CustomPagerAdapter extends FragmentStatePagerAdapter {

private ArrayList<String> entries;
private MyFragment myFragment;

public CustomPagerAdapter(FragmentManager fragmentManager, ArrayList<String> entries) {
    super(fragmentManager);
    this.entries = entries;
}

// Returns total number of pages
@Override
public int getCount() {
    return entries.size();
}

// Returns the fragment to display for that page
@Override
public Fragment getItem(int position) {
    myFragment = new MyFragment();
    final Bundle bundle = new Bundle();
   //pass your array list in bundle
    myFragment.setArguments(bundle);
    return myFragment;
}

// Returns the page title for the top indicator
@Override
public CharSequence getPageTitle(int position) {

    return title_of_viewpager;
}
}