我使用适配器创建了一个简单的RecyclerView,有时我需要在适配器外的RecyclerView中获取子视图的数量。
我使用:((LinearLayoutManager) myRecyclerView.getLayoutManager()).getChildCount()
。但我从未在RecyclerView中获得真正的观点。例如,我在列表中添加了10个项目并致电adapter.notifyDataSetChanged()
。在此之后,我致电((LinearLayoutManager) myRecyclerView.getLayoutManager()).getChildCount()
,我得到了4.
有人可以解释我如何在RecyclerView中获得真实的观点数量吗?
答案 0 :(得分:2)
您可以获得真实的观看次数。如果适配器有10个项目而database.ref().child('posts').once("value").then(function(snapshot) {
var i = 0;
snapshot.forEach(function(child) {
i = i + 1;
if (i == 2) {
var key = child.key;
console.log(key);
}
})
});
返回4,则没有任何问题。
模型(适配器)中的项目数和视图数不是相同的东西。
((LinearLayoutManager) myRecyclerView.getLayoutManager()).getChildCount()
不包含内存中所有10个项目的视图,在您的情况下只有4个项目。滚动时,它会重复使用这4个视图来显示不同的项目。这样做的目的是提高渲染性能。
如果你想获得10分,那么你应该使用RecyclerView
代替。