Android getChildAt(索引)返回null
我正在使用异步任务填充GridView: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
@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();
}
});