在Android中添加项目之前,是否可以估算出RecyclerView.Adapter计数的子项?

时间:2016-03-16 09:32:48

标签: android android-recyclerview

在Android中添加项目之前,是否有可能获得估计的RecyclerView.Adapter计数的子项?

我想要的是,在向其添加项目之前,我想估计适配器的子计数,以便估计我只能插入的可见项目。

类似于平板电脑的例子

  1. 平板电脑可以拥有多个儿童视图,而不是电话
  2. 手机可能比平板电脑的孩子少。
  3. 估计有多少孩子或物品(对我来说是一个优势)我可以添加到适配器,以便它可以在我的数据的第一批数据中明显地适合我的适配器。

1 个答案:

答案 0 :(得分:1)

这可能有用。它应该返回可见的ViewHolder的所有子视图。您也可以尝试将firstItem替换为0,将lastItem替换为recyclerView.getAdapter().getItemCount()

private static int getRecyclerViewChildCount(RecyclerView recyclerView) {

    //This below section is a bit clumsy, but the findFirstVisibleItem() etc. methods
    //Only apply to LinearLayoutManagers and their subclasses.
    try { 
        LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); 
    } catch (ClassCastException e) {
        throw new IllegalArgumentException("LayoutManager must be of type " + LinearLayoutManager.class.getSimpleName());
    }

    final int firstItem = layoutManager.findFirstVisibleItemPositiob();
    final int lastItem = layoutManager.recyclverView.getLayoutManager().findLastVisibleItemPosition();

    int viewCount = 0;

    for (int i = firstItem; i < lastItem; i++) {
        View view = recyclerView.findViewHolderForAdapterPosition(i).itemView;
        viewCount += view.getChildCount();
    }

    return viewCount;
}