ViewPager - przekazywanie layoutu

0

Witam Was serdecznie!

Postanowiłem skorzystać z ViewPagera aby ustawić sobie kilka widoków przewijanych slidem.
Spójrzcie na kod:
Moje activity:

public class MainActivity extends ActionBarActivity {

	private int imageArra[] = {R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageArra);
        ViewPager myPager = (ViewPager) findViewById(R.id.pager);
        myPager.setAdapter(adapter);
        myPager.setCurrentItem(0);
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
	   getMenuInflater().inflate(R.menu.main, menu);
	   return true;
   }

  }

A tu klasa ViewPagerAdapter:

public class ViewPagerAdapter extends PagerAdapter {

 Activity activity;
 int imageArray[];

 public ViewPagerAdapter(Activity act, int[] imgArra) {
  imageArray = imgArra;
  activity = act;
 }

 public int getCount() {
  return imageArray.length;
 }

 public Object instantiateItem(View collection, int position) {
  ImageView view = new ImageView(activity);
  view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
    LayoutParams.FILL_PARENT));
  view.setScaleType(ScaleType.FIT_XY);
  view.setBackgroundResource(imageArray[position]);
  ((ViewPager) collection).addView(view, 0);
  return view;
 }

 @Override
 public void destroyItem(View arg0, int arg1, Object arg2) {
  ((ViewPager) arg0).removeView((View) arg2);
 }

 @Override
 public boolean isViewFromObject(View arg0, Object arg1) {
  return arg0 == ((View) arg1);
 }

 @Override
 public Parcelable saveState() {
  return null;
 }
}

Jak widać działa to na takiej zasadzie, że widok jest uzupełniony obrazkami, które przekazuję w parametrze i wszystko jest ok. Jednak widoki będą bardziej skomplikowane niż jeden obrazek. Moje pytanie brzmi:
Czy można przekazywać do klasy Layout, a następnie tworzyć na jego podstawie widok?
To znacznie ułatwiałoby sprawę. Stworzyłbym sobie layouty, z widokami których potrzebuje, a następnie poprzez klasę ViewPagerAdapter nakładał te layouty na aktualny widok w komórce.
Nie wiem być może robi się to inaczej dlatego pytam. Jeśli rozwiązuje się to całkowicie inaczej to poproszę o informację jak.

Pozdrawiam !
NieZnasz

0

Panowie i Panie czy byłby ktoś tak uprzejmy i napisał cokolwiek na ten temat? Ucieszy Mnie zarówno "nie da się" jak i "Nie wiesz takich rzeczy?!?!Wróć do podstaw!!!". Jednak najlepsza będzie odpowiedź z nakierowaniem Mnie jak to zrobić.
Pozdrawiam

0

Może lepszy będzie FragmentPagerAdapter i praca z fragmentami? Wewnątrz fragmentu możesz już robić co chcesz.

0

Ja używam ViewPagera tylko we FragmentActivity i działa elegancko z przeciążonym adapterem
Wszystkie klasy wewnątrz widoku dziedziczą po Fragment i dla nich możesz sobie normalnie layout ustawiać
http://developer.android.com/guide/components/fragments.html

Tu masz przykład

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import widoki.FragmentView1;
import widoki.FragmentView2;
import widoki.FragmentView3;
import widoki.FragmentView4;

public class MenuGlowne extends FragmentActivity {
   private Context cxt;

    @Override


    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_menu_glowne);
        ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
        pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
        cxt=getApplicationContext();

    }




    private class MyPagerAdapter extends FragmentPagerAdapter {

        public MyPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int pos) {


            switch (pos) {

                case 0:
                    return FragmentView.newInstance();
                case 1:
                    return FragmentView1.newInstance();
                case 2:
                    return FragmentView2.newInstance();
                case 3:
                    return FragmentView3.newInstance();

                default:
                    return FragmentView4.newInstance();
            }
        }

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


}

0

Ale co chciałbyś mieć kilka activity i przerzucać je gestem prawo-lewo?

1 użytkowników online, w tym zalogowanych: 0, gości: 1