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

Android 在自定义PagerAdapter中膨胀ListView会使setAdapter调用无效,android,listview,android-arrayadapter,layout-inflater,android-pageradapter,Android,Listview,Android Arrayadapter,Layout Inflater,Android Pageradapter,我试图创建一个自定义的PagerAdapter,因为我想显示一些页面,其中每个页面都包含一个ListView,应该由寻呼机适配器构造函数MyPagerAdapter初始化,该构造函数接收使用ViewPager的活动,以及字符串列表条目 问题是在列表视图上调用的setAdapter(myListAdapter)似乎无效,而列表视图则显示为空 这里是我试图初始化列表视图的代码片段: public class MyPagerAdapter extends PagerAdapter { ... p

我试图创建一个自定义的
PagerAdapter
,因为我想显示一些页面,其中每个页面都包含一个
ListView
,应该由寻呼机适配器构造函数
MyPagerAdapter
初始化,该构造函数接收使用
ViewPager
活动
,以及字符串列表
条目

问题是在
列表视图上调用的
setAdapter(myListAdapter)
似乎无效,而列表视图则显示为空

这里是我试图初始化
列表视图的代码片段:

 public class MyPagerAdapter extends PagerAdapter {
 ...
 public MyPagerAdapter( Activity activity, ArrayList<String> entries){
        mContext = activity.getBaseContext();
        inflater = LayoutInflater.from(mContext);
        ViewGroup viewGroup = (ViewGroup) activity.findViewById(R.id.pager);
        View v=inflater.inflate(R.layout.page1, viewGroup);
        ListView page_1_list = (ListView) v.findViewById(R.id.page_1_list);
        mylistAdapter = new ArrayAdapter(mContext, R.layout.spinner_item, entries);
        page_1_list.setAdapter(mylistAdapter);
 }
  ....
}
公共类MyPagerAdapter扩展了PagerAdapter{
...
公共MyPagerAdapter(活动、阵列列表条目){
mContext=activity.getBaseContext();
充气器=从(mContext)开始的充气器;
ViewGroup ViewGroup=(ViewGroup)activity.findViewById(R.id.pager);
视图v=充气机。充气(R.layout.page1,视图组);
ListView页面列表=(ListView)v.findViewById(R.id.page页面列表);
mylistAdapter=新的ArrayAdapter(mContext、R.layout.spinner\u项、条目);
第1页列表。设置适配器(mylistAdapter);
}
....
}
有人能给我解释一下为什么会发生这种情况,以及我如何修复错误吗

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

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

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;
}
}
公共类CustomPagerAdapter扩展了FragmentStatePagerAdapter{
私有ArrayList条目;
私有MyFragment-MyFragment;
公共CustomPagerAdapter(FragmentManager FragmentManager,ArrayList条目){
超级(碎片管理器);
this.entries=条目;
}
//返回总页数
@凌驾
public int getCount(){
返回条目。size();
}
//返回要为该页显示的片段
@凌驾
公共片段getItem(int位置){
myFragment=新的myFragment();
最终捆绑=新捆绑();
//以捆绑方式传递数组列表
setArguments(bundle);
返回myFragment;
}
//返回顶部指示器的页面标题
@凌驾
公共字符序列getPageTitle(int位置){
返回_viewpager的标题_;
}
}

为什么要在构造函数中执行此操作?。我认为你应该使用
Fragment
和。这不是做这种事情的方式。
ViewPager
是否包含无尽的项?@ADM这是我在活动中使用的PagerAdapter的构造函数,其中我有
ViewPager
(即作为构造函数中的参数传递的
活动)。是的,我知道这一点。但是ViewPager是否包含无限的项目?无论如何,是/否这两种情况我建议使用上述解决方案。要回答您的问题,您的代码是不够的。添加完整的代码。这里的视图是什么?另外,视图寻呼机包含片段,对吗?为什么不以正确的方式初始化片段中的列表?