肆意先生XD 2015-10-10 00:55 采纳率: 0%
浏览 1561

【Android】ViewPager+GridView结合使用报错?

首先声明下程序是可运行的代码,运用一个initViewPager();方法初始化ViewPager和GridView。我想把初始化GridView初始化放在initGridView中该如何写这部分代码。因为XML文件无错所以就不上了,JAVA代码如下。

 public class MainActivity extends Activity {

    private View tab01 = null;
    private View tab02 = null;
    private ViewPager mViewPager = null;
    private List<View> tabList = null;
    private PagerAdapter mAdapter = null;
    private GridView mGridView = null;
    private List<Map<String,Object>> mData = new ArrayList<Map<String,Object>>();
    private SimpleAdapter gAdapter = null;


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

        initViewPager();
//      initGridView();     
    }

    private void initGridView() {

    }

    private List<Map<String, Object>>  getData() {

        int[] image = {R.drawable.icon_cloudday,R.drawable.icon_fog,
                R.drawable.icon_rain,R.drawable.icon_snow,R.drawable.icon_sunnyday};
        String[] name = {"图一","图二","图三","图四","图五"};
        for(int i=0;i<name.length;i++){

            Map<String,Object> map = new HashMap<String,Object>();
            map.put("image", image[i]);
            map.put("name", name[i]);
            mData.add(map);
        }

        return mData;
    }

    private void initViewPager() {

        this.mViewPager = (ViewPager) findViewById(R.id.mViewPager);
        LayoutInflater mInlfater = getLayoutInflater();
        this.tab01 = mInlfater.inflate(R.layout.tab01, null);
        this.tab02 = mInlfater.inflate(R.layout.tab02, null);

        this.tabList = new ArrayList<View>();
        tabList.add(tab01);
        tabList.add(tab02);
        mAdapter = new PagerAdapter() {

            @Override
            public boolean isViewFromObject(View arg0, Object arg1) {
                // TODO Auto-generated method stub
                return arg0 == arg1;
            }

            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return tabList.size();
            }

            @Override
            public void destroyItem(ViewGroup container, int position,
                    Object object) {
                // TODO Auto-generated method stub
                container.removeView(tabList.get(position));
            }

            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                // TODO Auto-generated method stub
                container.addView(tabList.get(position));
                return tabList.get(position);
            }
        };
        mViewPager.setAdapter(mAdapter);    
        //--------↓
        this.mGridView = (GridView)tab02.findViewById(R.id.mGridView);
        this.gAdapter = new SimpleAdapter(this, getData(),R.layout.griditem,
                new String[] {"image","name"},new int[] {R.id.image,R.id.name});
        this.mGridView.setAdapter(gAdapter);
        //--------↑
        //以上代码是否可以放在initGridView()中实现,有待考证。
    }

}

如代码所示

  • 写回答

1条回答 默认 最新

  • JPF1024 2015-10-10 01:02
    关注

    可以,保证方法调用先后顺序,放进去调试一下即可。

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
  • ¥15 找一个网络防御专家,外包的
  • ¥100 能不能让两张不同的图片md5值一样,(有尝)
  • ¥15 informer代码训练自己的数据集,改参数怎么改
  • ¥15 请看一下,学校实验要求,我需要具体代码
  • ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
  • ¥20 MATLAB绘制两隐函数曲面的交线
  • ¥15 求TYPCE母转母转接头24PIN线路板图
  • ¥100 国外网络搭建,有偿交流
  • ¥15 高价求中通快递查询接口