0

我正在创建动态 ViewPager 如下:请。查看 :

 /** adding gridView created to main root layout.*/

    pager=new ViewPager(this);
    pagerAdapter = new KeyboardPagerAdapter();

    pagerAdapter.addView (mGridImages, 0);
    pagerAdapter.addView (mGridTextImages, 1);

    pager.setAdapter (pagerAdapter);
    ViewGroup.LayoutParams params = mGridImages.getLayoutParams();
    params.height = mDeviceHeight;
    pager.setLayoutParams(params);

    linRootLayout.addView(pager);
    return linRootLayout;

我的类KeyboardPagerAdapter如下:

public class KeyboardPagerAdapter 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".
// Retuns 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);
}
}

我的问题是,当我启动我的应用程序时,里面的第一页显示正常。但是,第二个寻呼机显示为空白:白页。可能是什么问题?为什么 PagerAdapter 没有像我一样采取第二个观点

pagerAdapter.addView (mGridImages, 0); pagerAdapter.addView (mGridTextImages, 1);

1 > 添加第二个视图。

请。检查并指导我。谢谢。

4

1 回答 1

0

这是我的谜。作为全局,我已将第二个布局的可见性设置为不可见。

于 2017-04-19T07:33:37.273 回答