对于RecyclerView,getChildCount()和getChildAt()返回零

时间:2015-02-13 17:23:40

标签: android android-recyclerview

我正在尝试计算RecyclerView儿童。我试过这个:

myRView.getChildCount();

而且:

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

我需要让孩子在某个位置查看,这就是我需要它的原因。如果我打电话给getChildAt(index)我从来没有得到任何孩子视图。

这两种方法都返回0.如何从RecyclerView获取子视图?我的项目显示正确,一切正常。我在创建适配器并将其设置为RecyclerView后调用这些方法。谢谢你的帮助。

4 个答案:

答案 0 :(得分:6)

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

myRView.getAdapter.getItemCount();

答案 1 :(得分:4)

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

设置适配器时,布局将在下一个视图树遍历中进行。您可以考虑添加ViewTreeObserver。

答案 2 :(得分:2)

如果忘记将LayoutManager设置为RecyclerView,则

getChildCount()可能返回0。

myRView.setLayoutManager(mLayoutManager);

答案 3 :(得分:1)

当视图未准备就绪时调用该函数,这就是为什么它返回零,使用post()方法会有所帮助。

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