肆意先生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
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏