【问题标题】:Android GridView get child item don't workAndroid GridView 获取子项不起作用
【发布时间】:2014-02-12 14:36:22
【问题描述】:

我想获取 GridView 子项,我使用下面的代码,但它不起作用。

    mAppGridAdapter = new gridadapter(mContext, appPackageInfos);
    mAppManaGridView.setAdapter(mAppGridAdapter);

    if(mAppManaGridView.getCount()>0)
    {                                                                       
        mAppManaGridView.setSelection(0);
        Log.d("adan", "adan>" + mAppManaGridView.getCount());
        Log.d("adan", mAppManaGridView.getFirstVisiblePosition()  +  ",  "  +mAppManaGridView.getLastVisiblePosition());
        for(int visiblePosition = mAppManaGridView.getFirstVisiblePosition(); visiblePosition <= mAppManaGridView.getLastVisiblePosition(); visiblePosition++) {
            View item = mAppManaGridView.getChildAt(visiblePosition);
            // make something
            Log.d("adan", "adan>" + item.getWidth()+","  +item.getHeight() );

        }

    }

显示的调试日志消息,它可以获取子计数,但无法获取 GridView 的任何子项:

D/adan    (11457): adan>165
D/adan    (11457): 0,  -1

我也试过这段代码,但是返回项为null,它崩溃了nullPointerException。

    if(mAppManaGridView.getCount()>0)
    {                                                                       
        mAppManaGridView.setSelection(0);
        Log.d("adan", "adan>" + mAppManaGridView.getCount());
        View item = mAppManaGridView.getChildAt(0);
        // make something
        Log.d("adan", "adan>" + item.getWidth()+","  +item.getHeight() );
    }

你能帮我解决这个问题吗?这让我很困扰。

【问题讨论】:

    标签: java android gridview


    【解决方案1】:

    getChildAt() 返回 GridView 的子视图。子视图位置和你的数据位置不一样,因为AdapterViews回收和复用子视图。这样,您可以在适配器中拥有 100 个数据项,而在 gridview 中只有 7 个子视图。

    这是基本的,您应该观看有关 listview 的 google IO 视频(他们在那里描述的内容主要适用于所有 AdapterViews)

    http://www.youtube.com/watch?v=wDBM6wVEO70

    【讨论】:

    • 如果item是动态生成的,那么如何获取GridView的item大小呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多