ViewPager + GridView控件onItemClick [英] ViewPager + GridView onItemClick

查看:648
本文介绍了ViewPager + GridView控件onItemClick的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个ViewPager布局内的GridView(我不知道是否有差别)。

I have a GridView inside a layout in a ViewPager (I'm not sure if that makes a difference).

inside SampleAdapter for ViewPager{
@Override
        public Object instantiateItem(ViewGroup container, int position) {
            View page = null;
            if (position == 0) {
                page = getLayoutInflater().inflate(R.layout.layoutone,
                        container, false);
            } else {
                page = getLayoutInflater().inflate(R.layout.layouttwo,
                        container, false);
                GridView grid = (GridView) page.findViewById(R.id.gridview);
                grid.setOnItemClickListener(new OnItemClickListener() {

                    @Override
                    public void onItemClick(AdapterView<?> arg0, View arg1,
                            int arg2, long arg3) {

                                  //switch to another activity based on click event

                    }

                });
                grid.setAdapter(new GridItemAdapter(context)); //sets custom gridItemLayout


        container.addView(page);

        return (page);

    }

}

我可以查看网格精细。自定义布局也正在按我GridAdapter。然而,我的点击事件不会被解雇。是不是因为instantiateItem()方法调用的?我怎样才能解决这个得到什么?

I can view the Grid fine. The custom layout is also working as per my GridAdapter. However, my click event is not being fired. Is it because of the instantiateItem() method call? How can I get around this?

我不明白的片段是如何与ViewPager工作还,所以如果这个解决方案涉及切换到基于片段的方法,这将会是巨大的,如果有人能细说了。

I don't quite understand how Fragments work with ViewPager yet, so if this solution involves switching to a Fragment-based method, it'd be great if someone could elaborate.

推荐答案

我会坚持让你创建一个单独的片段,并使用的getItem(位置)你的 ViewPager 适配器发送位置和实例的片段。内部片段您可以轻松地抬高你的布局,并使用 GridView控件

I would insist you to create a seperate Fragment and using getItem(position) of your ViewPager Adapter for sending position and instantiating your Fragment. Inside Fragment you can easily inflate your Layout and use GridView.

 @Override
 public Fragment getItem(int position) {
    return GridFragment.newInstance(position);
}

您当前正在使用的方式找我有点复杂。所以,我只想坚持让你尝试一下。样本演示是 此处 以我的方式俗语。

The current way you are using looks a bit complex for me. So, I would just insist you to try it out. A sample demo is here for the way I am saying.

这篇关于ViewPager + GridView控件onItemClick的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆