RecyclerView 的 getChildCount() 和 getChildAt() return 为零

getChildCount() and getChildAt() return zero for RecyclerView

我正在尝试计算 RecyclerView 子项的数量。我试过这个:

myRView.getChildCount();

还有这个:

LinearLayoutManager lm = ((LinearLayoutManager)myRViews.getLayoutManager());
lm.getChildCount();

我需要在某个位置获得一个子视图,所以这就是我需要这个的原因。如果我调用 getChildAt(index) 我永远不会得到任何子视图。

这两种方法return 0. 还有什么方法可以从 RecyclerView 获取子视图?我的物品显示正确,一切正常。我在创建适配器并将其设置为 RecyclerView 后调用这些方法。感谢您的帮助。

您可以使用适配器的 getItemCount() 函数。

myRView.getAdapter.getItemCount();

我假设您在计算布局之前调用这些方法。

设置适配器后,布局将在下一次遍历视图树时发生。可以考虑加一个ViewTreeObserver。

当视图未准备好时调用该函数,这就是它 returns 零的原因,使用 post() 方法会有所帮助。

myRView.post(new Runnable() {
        @Override
        public void run() {
            Log.show("myRView.post " + myRView.getChildCount());
            View childView = myRView.getChildAt(0);
        }
    });

getChildCount() 如果您忘记将 LayoutManager 设置为 RecyclerView,则可能 return0。

myRView.setLayoutManager(mLayoutManager);