Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
Android getChildAt(索引)返回null_Android_Gridview - Fatal编程技术网

Android getChildAt(索引)返回null

Android getChildAt(索引)返回null,android,gridview,Android,Gridview,我正在使用异步任务填充GridView: @Override public void onLoad() { super.onLoad(); //... set Loading view and actually get the data adapter = new DepartmentGridAdapter(getActivity(), R.layout.gird_department_item_layout, mSalesPresenter.ge

我正在使用异步任务填充GridView:

@Override
public void onLoad() {
    super.onLoad();
    //... set Loading view and actually get the data
    adapter = new DepartmentGridAdapter(getActivity(), R.layout.gird_department_item_layout,
            mSalesPresenter.getDepartments());
}

@Override
public void onDoneLoading() {
    super.onDoneLoading();
    gridView.setAdapter(adapter); // Populate the GridView
    onShowTutorial(); // <--- This is where I need to get the firstChild.
}
但是这个语句总是空的。我甚至为GridView调用了getCount,但它不是0。问题似乎是GridView儿童无法立即访问。如果在UI准备就绪后使用按钮强制执行ShowTutorial方法,则可以访问第一个子级

在线程执行之后,我已经没有办法触发该方法了


有解决方案吗?

尝试发布一个runnable,以便在gridView完成当前正在执行的操作时运行。有关View的详细信息。发布:

找到了

我使用了ViewTreeObserver,它可以工作:

gridView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            onShowTutorial();
        }
    });

onDoneLoading接口方法解决了这个问题。但没有成功
@Override
public void onDoneLoading() {
    super.onDoneLoading();
    gridView.setAdapter(adapter); // Populate the GridView

    // Tells the gridView to "queue" the following runnable
    gridView.post(new Runnable() {
        @Override
        public void run() {
            onShowTutorial(); // <--- This is where I need to get the firstChild.
        }
    });
}
gridView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            onShowTutorial();
        }
    });