如何知道GridView何时完全绘制并准备就绪?

She*_*bic 8 android android-listview

我有一个带有自定义适配器的长GridView,我怎么知道GridView何时完全显示并准备好了?

这是代码中的问题:

dashboard = (GridView) findViewById(R.id.dashboard);
dashboard.setAdapter(new ListItemsAdapter(this, allIcons));
AlertSomeItemsOfTheListView();
Run Code Online (Sandbox Code Playgroud)

在序列中,在完全绘制GridView之前执行方法"AlertSomeItemsOfTheListView".

Pio*_*otr 19

您可以ViewTreeObserver为您获取实例GridView并使用它来监听诸如此类的事件onLayout.你可以得到ViewTreeObserver你的View使用View.getViewTreeObserver().我不确定onLayout事件对你来说是否足够,因为它并不完全意味着a View已完全绘制但你可以尝试一下.

这里有一个代码示例,您可以使用它来监听onLayout事件(您可以使用此类代码,例如在onCreate您的方法中Activity):

dashboard.getViewTreeObserver().addOnGlobalLayoutListener(
    new ViewTreeObserver.OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
            AlertSomeItemsOfTheListView();

            // unregister listener (this is important)
            dashboard.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        }
    });
Run Code Online (Sandbox Code Playgroud)

注意:在调用侦听器后取消注册是很重要的.如果你不这样做,它将在每个onLayout不是我们想要的事件上被调用(我们希望它只执行一次).

  • 对于V13 +,不建议使用"removeGlobalOnLayoutListener".请改用removeOnGlobalLayoutListener. (2认同)