Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ViewPager android中创建片段_Android_Listview_Android Fragments_Android Viewpager - Fatal编程技术网

在ViewPager android中创建片段

在ViewPager android中创建片段,android,listview,android-fragments,android-viewpager,Android,Listview,Android Fragments,Android Viewpager,MainActivityextends fragmentActivity具有调用listviewadapter的listview,其中有一个带有ViewpagerAdapter的ViewPager,如果我需要在ViewPager中生成5个片段,那么如何将getFragmentManager传递给适配器 MainActivity[fragmentActivity]-->Listview-->ListviewAdapter[Custom BaseAdapter with getview of lay

MainActivityextends fragmentActivity具有调用listviewadapter的listview,其中有一个带有ViewpagerAdapter的ViewPager,如果我需要在ViewPager中生成5个片段,那么如何将getFragmentManager传递给适配器

MainActivity[fragmentActivity]-->Listview-->ListviewAdapter[Custom BaseAdapter with getview of layout ViewPager]-->ViewPager-->ViewPageAdapter[我需要根据位置创建5个片段?]

如果我粘贴了整个代码,那么我只附加了一个代码,这会太长

public class ViewPagerAdapter extends PagerAdapter  {    
    ArrayList<ModelClass> arrayModelClasses = new ArrayList<ModelClass>();
    Context mcontext ;
    LinearLayout layouttest;

    final int PAGE_COUNT = 5;
    private String titles[] = new String[] { "Villa ","", "" ,"","",""};

    private int[] imageResId = { R.drawable.transparant,R.drawable.ic_action_place, R.drawable.icon_3d1,
            R.drawable.icon_flooplan,R.drawable.icon_gallery,R.drawable.icon_location };

    @SuppressLint("NewApi")
    @Override
    public void finishUpdate(ViewGroup container) {
        // TODO Auto-generated method stub
        super.finishUpdate(container);
    }

    public ViewPagerAdapter(ArrayList<ModelClass> arrayModelClasses , Context context) {
        super();
        this.arrayModelClasses = arrayModelClasses;
        this.mcontext= context;
    }

    @Override
    public boolean isViewFromObject(View collection, Object object) {
        return collection == ((View) object);
    }

    View view;

    @Override
    public Object instantiateItem(View collection, int position) {
        if (position == 0) {
            //need to call fragment 1
        }if (position == 1) {
        //need to call fragment 2
        }if (position == 2) {
        //need to call fragment 3
        }if (position == 3) {
        //need to call fragment 4
        }if (position == 4) {
        //need to call fragment 5
        }   
        return view;
    }

    @Override
    public void destroyItem(View container, int position, Object object) {
        ((ViewPager) container).removeView((View) object);
    }

    @Override
    public CharSequence getPageTitle(int position) {
         Drawable image = mcontext.getResources().getDrawable(imageResId[position]);
            image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight());
            SpannableString sb = new SpannableString(" " +  titles[position] );
            ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM);
            sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            return sb;
    }

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

}
但是它将FragmentPagerAdapter用于viewPager,并从FragmentActivity传递getSupportFragmentManager,但是使用2个适配器是不可能的,所以请提供帮助

问题:如何在listview中的viewPager中创建片段。对不起,如果它让人困惑的话


谢谢,

考虑到您没有发布您的ListView适配器,我假设您以类似的方式扩展了BaseAdapter。在getView上。。。方法实例化新的ViewPagerAdapter并将其设置为列表项xml中定义的PagerAdapter


注意:在ListView中有一个ViewPager,特别是在以这种方式加载项目时,可能会导致性能低下。

我在ViewPager中附加了片段,代码如下所示

公共类IntroslideActivity扩展了FragmentActivity{

 private static int NUM_PAGES = 5;          

    private ViewPager mPager;


    private PagerAdapter mPagerAdapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_introslide);



     mPager = (ViewPager) findViewById(R.id.pager);
/** *一个简单的寻呼机适配器,在 *顺序。 */ 私有类ScreenSlidePageAdapter扩展了FragmentPagerAdapter{

     protected  final int[] ICONS = new int[] {
         R.drawable.ic_message,
         R.drawable.ic_phone,
         R.drawable.ic_message,
         R.drawable.ic_message,
         R.drawable.ic_message
 };

    public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) {
        super(fm);
    }

    @Override
    public android.support.v4.app.Fragment getItem(int position) {
        android.support.v4.app.Fragment frm = null;
        System.out.println("scrolling position"+position);
        if(position==0){

            frm=ScreenSlidePageFragment.create(position);
        }
        else if(position==1){
            frm=Screenslidetwo.create(position);
        }
        else if(position==2){
            frm=Screenslidethree.create(position);
        }
        else if(position==3){
            frm=Screenslidefour.create(position);
        }
        else if(position==4){
            frm=Screenslidefive.create(position);
        }
        return frm;
    }

    @Override
    public int getCount() {
        return NUM_PAGES;
    }
    public void setCount(int count) {
        if (count > 0 && count < 5) {
            NUM_PAGES = count;
            notifyDataSetChanged();
        }
    }


}



        mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
        mPager.setAdapter(mPagerAdapter);
}
}

是的,我已经完成了tat,但是如何在ViewPagerAdapter中传递getFramentManager来实例化片段呢?哦。您可以创建一个局部变量,在实例化ListView适配器时将其设置在该适配器上,然后在实例化后将其传递给ViewPagerAdapter。看起来像adapter=new MyListViewAdapterfragmentManager;ViewPagerAdapter也一样@Anitha但是在listviewadatper中使用什么类型的变量来保存getSupportFragmentManager而不将其扩展到fragmentadatper。这已经解决了,但我仍然有一个新问题。。。如果可以的话,请调查一下solvehttp://stackoverflow.com/questions/29315705/listview-viewpager-doesnt-set-fragment-androidIf 您需要根据位置创建,然后需要为特定位置维护片段的arraylist抱歉@karthika这没有帮助我想从listview[baseadapter]传递getSupportFragmentManagerviewpageradapter[PagerAdapter]的适配器。您的示例显示在fragmentActivity中调用viewpagerAdapter。