Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android GridView获取子项don';行不通_Java_Android_Gridview - Fatal编程技术网

Java Android GridView获取子项don';行不通

Java Android GridView获取子项don';行不通,java,android,gridview,Java,Android,Gridview,我想获取GridView子项,我使用下面的代码,但它不起作用 mAppGridAdapter = new gridadapter(mContext, appPackageInfos); mAppManaGridView.setAdapter(mAppGridAdapter); if(mAppManaGridView.getCount()>0) {

我想获取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() );

        }

    }
我也尝试过这段代码,但返回项为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() );
    }
你能帮我解决这个问题吗?这让我很困扰。

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

这是最基本的,你应该观看关于listview的google IO视频(他们描述的内容主要针对所有AdapterNews)


如果项目是动态生成的,那么如何获取GridView的项目大小?
    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() );
    }