Android Tabbed Activity Add New Fragment by volley

67 Views Asked by At

Initially my idea is to create a list of children using tabbed activity. 1- Parent have one or more than one child. 2- Using volley I want to pass the logic using tabbed activity to manege creating a new fragment for each child itself.

I tried as you can see my activity below and after that you gonna see my adapter:

private ViewPager mViewPager = null;
private ChildAdapter pagerAdapter = null;

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

    // Set up the ViewPager with the sections adapter.
    pagerAdapter = new ChildAdapter();
    mViewPager = (ViewPager) findViewById(R.id.view_pager);
    mViewPager.setAdapter(pagerAdapter);

    LayoutInflater inflater = context.getLayoutInflater();
    FrameLayout v0 = (FrameLayout) inflater.inflate(R.layout.fragment_profile, null);
    pagerAdapter.addView(v0, 0);

}

//-----------------------------------------------------------------------------
// Here's what the app should do to add a view to the ViewPager.
public void addView(View newPage) {
    int pageIndex = pagerAdapter.addView(newPage);
    // You might want to make "newPage" the currently displayed page:
    mViewPager.setCurrentItem(pageIndex, true);
}

//-----------------------------------------------------------------------------
// Here's what the app should do to remove a view from the ViewPager.
public void removeView(View defunctPage) {
    int pageIndex = pagerAdapter.removeView(mViewPager, defunctPage);
    // You might want to choose what page to display, if the current page was "defunctPage".
    if (pageIndex == pagerAdapter.getCount())
        pageIndex--;
    mViewPager.setCurrentItem(pageIndex);
}

//-----------------------------------------------------------------------------
// Here's what the app should do to get the currently displayed page.
public View getCurrentPage() {
    return pagerAdapter.getView(mViewPager.getCurrentItem());
}

//-----------------------------------------------------------------------------
// Here's what the app should do to set the currently displayed page.  "pageToShow" must
// currently be in the adapter, or this will crash.
public void setCurrentPage(View pageToShow) {
    mViewPager.setCurrentItem(pagerAdapter.getItemPosition(pageToShow), true);
}

}

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
1

There are 1 best solutions below

0
On
      Adapter
      public class ChildAdapter extends PagerAdapter
{
    // This holds all the currently displayable views, in order from left to right.
    private ArrayList<View> views = new ArrayList<View>();

    //-----------------------------------------------------------------------------
    // Used by ViewPager.  "Object" represents the page; tell the ViewPager where the
    // page should be displayed, from left-to-right.  If the page no longer exists,
    // return POSITION_NONE.
    @Override
    public int getItemPosition (Object object)
    {
        int index = views.indexOf (object);
        if (index == -1)
            return POSITION_NONE;
        else
            return index;
    }

    //-----------------------------------------------------------------------------
    // Used by ViewPager.  Called when ViewPager needs a page to display; it is our job
    // to add the page to the container, which is normally the ViewPager itself.  Since
    // all our pages are persistent, we simply retrieve it from our "views" ArrayList.
    @Override
    public Object instantiateItem (ViewGroup container, int position)
    {
        View v = views.get (position);
        container.addView (v);
        return v;
    }

    //-----------------------------------------------------------------------------
    // Used by ViewPager.  Called when ViewPager no longer needs a page to display; it
    // is our job to remove the page from the container, which is normally the
    // ViewPager itself.  Since all our pages are persistent, we do nothing to the
    // contents of our "views" ArrayList.
    @Override
    public void destroyItem (ViewGroup container, int position, Object object)
    {
        container.removeView (views.get (position));
    }

    //-----------------------------------------------------------------------------
    // Used by ViewPager; can be used by app as well.
    // Returns the total number of pages that the ViewPage can display.  This must
    // never be 0.
    @Override
    public int getCount ()
    {
        return views.size();
    }

    //-----------------------------------------------------------------------------
    // Used by ViewPager.
    @Override
    public boolean isViewFromObject (View view, Object object)
    {
        return view == object;
    }

    //-----------------------------------------------------------------------------
    // Add "view" to right end of "views".
    // Returns the position of the new view.
    // The app should call this to add pages; not used by ViewPager.
public int addView (View v)
{
    return addView (v, views.size());
}

//-----------------------------------------------------------------------------
// Add "view" at "position" to "views".
// Returns position of new view.
// The app should call this to add pages; not used by ViewPager.
public int addView (View v, int position)
{
    views.add (position, v);
    return position;
}

//-----------------------------------------------------------------------------
// Removes "view" from "views".
// Returns position of removed view.
// The app should call this to remove pages; not used by ViewPager.
public int removeView (ViewPager pager, View v)
{
    return removeView (pager, views.indexOf (v));
}

//-----------------------------------------------------------------------------
// Removes the "view" at "position" from "views".
// Retuns position of removed view.
// The app should call this to remove pages; not used by ViewPager.
public int removeView (ViewPager pager, int position)
{
    // ViewPager doesn't have a delete method; the closest is to set the adapter
    // again.  When doing so, it deletes all its views.  Then we can delete the view
    // from from the adapter and finally set the adapter to the pager again.  Note
    // that we set the adapter to null before removing the view from "views" - that's
    // because while ViewPager deletes all its views, it will call destroyItem which
    // will in turn cause a null pointer ref.
    pager.setAdapter (null);
    views.remove (position);
    pager.setAdapter (this);

    return position;
}

//-----------------------------------------------------------------------------
// Returns the "view" at "position".
// The app should call this to retrieve a view; not used by ViewPager.
public View getView (int position)
{
    return views.get (position);
}

// Other relevant methods:

// finishUpdate - called by the ViewPager - we don't care about what pages the
// pager is displaying so we don't use this method.

}