Insert Layout's in ViewPager

0

I have an activity that in the lower part of the same position a ViewPager where I intend to add an edit-text and a couple of buttons.

public class MyFragmentPagerAdapter extends FragmentPagerAdapter {

// List of fragments which are going to set in the view pager widget
List<Fragment> fragments;

/**
 * Constructor
 *
 * @param fm interface for interacting with Fragment objects inside of an
 *           Activity
 */
public MyFragmentPagerAdapter(FragmentManager fm) {
    super(fm);
    this.fragments = new ArrayList<Fragment>();
}

/**
 * Add a new fragment in the list.
 *
 * @param fragment a new fragment
 */
public void addFragment(Fragment fragment) {
    this.fragments.add(fragment);
}

@Override
public Fragment getItem(int arg0) {
    return this.fragments.get(arg0);
}

@Override
public int getCount() {
    return this.fragments.size();
}

@Override
public CharSequence getPageTitle(int position) {
    return "Página " + (position + 1);
}
}

Currently I have four pages where I load a background color and a text in this way.

        MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(
            getSupportFragmentManager());
    adapter.addFragment(ScreenSlidePageFragment.newInstance(getResources()
            .getColor(R.color.positivo), 0));
    adapter.addFragment(ScreenSlidePageFragment.newInstance(getResources()
            .getColor(R.color.negativo), 1));
    adapter.addFragment(ScreenSlidePageFragment.newInstance(getResources()
            .getColor(R.color.positivo), 2));
    adapter.addFragment(ScreenSlidePageFragment.newInstance(getResources()
            .getColor(R.color.negativo), 3));
    adapter.addFragment(ScreenSlidePageFragment.newInstance(getResources()
            .getColor(R.color.positivo), 4));
    this.pager.setAdapter(adapter);

This is done in the java file of the activity where I want the ViewPager to run.

I have two doubts: how would a test xml where two buttons and an edit_text appear in a drawable resource file? and how can I load that generated xml, in the java file where I set the content of the ViewPager if it were in the drawable folder?

    
asked by Eduardo 05.05.2017 в 12:01
source

1 answer

1

You can make in each creation of the fragment amount and own layout, depending on the position loads a fragment or another.

Here is a small example of putting together a ViewPager of 3 individual fragments.

public class DemoFragmentAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int position) {

        switch (position) {
            case 0:
                return FirstFragment.newInstance();
            case 1:
                return SecondFragment.newInstance();
            case 2:
                return ThirdFragment.newInstance();
            default:
                return null;
        }
    }

    @Override

    public int getCount() {
        return 3;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        super.destroyItem(container, position, object);
    }
}

In getItem is where you specify that Fragment should load depending on your position within ViewPager

You can create the fragment individually, as you can see in the onCreateView where you load the corresponding layout.xml .

public class FirstFragment extends Fragment {

    public static FirstFragment newInstance() {
        FirstFragment fragment = new FirstFragment();
        return fragment;
    }

    @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_one, container, false);
        return view;
    }

}

Finally set the Adapter to ViewPager

ViewPager mViewPager = (ViewPager) findViewById(R.id.view_pager);
DemoFragmentAdapter adapterViewPager = new DemoFragmentAdapter(getSupportFragmentManager());
mViewPager.setAdapter(adapterViewPager);
    
answered by 05.05.2017 в 13:59