2016-03-16 40 views
0

是否有可能得到一個估計的RecyclerView.Adapter的兒童計數之前添加Android項目?在Android中添加項目之前,是否可以估算RecyclerView.Adapter計數的子項?

我想要的是,我想估計一個適配器的兒童數,然後添加項目,以便我可以估計我只能插入的可見項目。

例如像平板

  1. 平板電腦可以有很多孩子觀看比電話
  2. 一個電話可能有孩子比平板

較少獲得一個估計有多少兒童或者項目(對我來說是一個優勢)我可以添加到適配器中,以便它在我的數據的第一批人羣中可見地適合我的適配器。

+0

http://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#getItemCount() –

+0

你是什麼意思?已經有['getItemCount()'](http://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#getItemCount())方法,在構建時您必須重寫適配器。你有什麼別的嗎? – PPartisan

+0

我想到一個猜測..說你有一個viewholder對象; inOncreateViewHolder函數你得到父母的權利..從你可以嘗試獲得所有的孩子;不知道 – DJphy

回答

0

這可能工作。它應該返回ViewHolder的所有可見的子視圖。您還可以通過與recyclerView.getAdapter().getItemCount()更換firstItem0lastItem嘗試:

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; 
} 
+0

我真的想要@PPartisan是一個估計,我看到你得到findLastVisible和Last來獲得總數,但在我的情況下,我的適配器中沒有孩子,所以我實際上會想估計。但問題是可能的嗎? – david

+0

你可以通過以下方式估計在適配器設置之前的數量: - 你正在發送數據到適配器對象的列表,數組或者以任何方式,你可以通過列表的大小或者數組長度來獲得孩子的數量 – santoXme

+0

@david I'在這種情況下有點困惑。你能否在你的問題中加入一些示例代碼來幫助可視化你的問題?如果你知道你的數據集的大小和ViewHolder中子項的數量,那麼當然這只是一個乘以另一個的情況。 – PPartisan

相關問題