2012-12-10 46 views
0

用gridview创建片段的正确方法是什么? 我可以这样做吗? GridView的Viewpager片段

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FF0000" 

    android:numColumns="2" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="0dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" 
/> 

?如何添加适配器在运行时的GridView控件项目添加到它?

private void initialisePaging() { 

    List<Fragment> fragments = new Vector<Fragment>(); 
    fragments.add(Fragment.instantiate(this, fragment1.class.getName())); 
    fragments.add(Fragment.instantiate(this, fragment2.class.getName())); 
    fragments.add(Fragment.instantiate(this, fragment3.class.getName())); 
    this.mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(), fragments); 
    //this.mPagerAdapter.setListener(this); 
    Log.e("init", "message"); 
    pager = (ViewPager)super.findViewById(R.id.viewpager_menu); 
    pager.setAdapter(this.mPagerAdapter); 

    GridView gridView = (GridView)findViewById(R.layout.menu1_fragment); 
} 

当我这样做时,gridview为空,我无法将适配器附加到它。

回答

1

您应该在PagerAdapterinstantiateItem方法的个别页面上找到/配置视图,而不是在配置寻呼机本身时。每个页面在需要时都会被懒惰地创建,并且instantiateItem就是每个页面要求设置的页面。在您尝试在此处找到您的GridView实例的位置,它尚不存在,因为该传呼机尚未创建它,并且您尚未将其本地化到您要设置的页面。

+0

我该如何得到gridView? @Override \t public Object instantiateItem(ViewGroup container,int position){ \t \t Fragment g = fragments.get(position); \t \t GridView gridView =(GridView)g.getView(); \t \t \t return super.instantiateItem(container,position); \t} GridView仍然为空。 – Romans