2017-02-24 5 views
1

私はRecyclerViewを250個のアイテムでポーズします。 各ビューには4つのTextViewしかありません。 RecyclerView onCreateViewHolderのアダプターを作成するときに約5ミリ秒かかり、onBindViewHolderに約3ミリ秒かかります。 250アイテムの場合、2秒の遅延があります。この2秒間で、アダプタ割り当てがメインスレッド上で実行されなければならないため、UIがフリーズします。で例えばRecyclerViewはonCreateViewHolderとonBindViewHolderを起動するときに多くの時間をとります:プログレスバーはフリーズします

onCreateViewHolderそこに多くのレイアウトインフレの横に行くのではありません。

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    long lTime = System.currentTimeMillis(); 
    switch (viewType) { 
     case TYPE_HEADER: 
      SpendingHeader lResult = new SpendingHeader(LayoutInflater.from(mContext).inflate(R.layout.layout_spending_item_header, null)); 
      LogUtils.logTime(lTime, TAG, "onCreateViewHolder"); 
      return lResult; 
     default: 
      SpendingItem lResult2 = new SpendingItem(LayoutInflater.from(mContext).inflate(R.layout.layout_spending_item, null)); 
      LogUtils.logTime(lTime, TAG, "onCreateViewHolder"); 
      return lResult2; 
    } 
} 

完全な計算のものがAsyncTaskでバックグラウンドスレッドで実行されます。 onCerateViewHolderとonBindViewHolderだけが時間がかかり、プログレスバーがフリーズします。私は待つのがいいですが、プログレスバーがフリーズするのは良くありません。これを回避する方法はありますか?また、私は30番目の項目にスクロールした後に例えばプログレスバーを取得する怠惰なリストを望んでいません。

注:Recyclerviewは、actionbarBar ControllableLayoutビヘイビアのNestedScrollViewの一部でなければなりません。これは問題になるかもしれませんか? here

+1

問題はNestedScrollViewのようです。通常、onCreateViewHolderとonBindViewHolderはすぐに250回呼び出されません(すべてが画面に収まらない場合を除く)。通常、onBindViewHolderは、新しいビューが画面に入るときにのみ呼び出されます。 –

+0

Recyclerviewはすでに 'NestedScrollingChild'を実装しているので、AppbarLayoutの動作を得るためにNestedScrolling Layoutに配置する必要はほとんどありません。 – Kuffs

答えて

1

RecyclerViewNestedScrollViewで囲む必要はありません。それがなくてもAppBarLayoutで正しく動作します。

あなたの遅れの理由はRecyclerViewアダプタは、ViewHoldersを作成し、NestedScrollViewは(NestedScrollViewサイズに合うように)間違った方法でRecyclerView対策自体を作るので、それが起こる(あなたのケースでは250)、それが持っているすべての項目にそれらを結合することで、この状況では、RecyclerViewは「間違ったサイズに合わせるのに十分なViewHoldersを作成する必要がある」と考えています。

setAutoMeasureEnabled(true)に電話して、正しく測定できるようにすることもできます。

+0

ありがとうございました。あなたが一度に長いRecyclerViewでそのAppBarLayoutを持っていたいと思っています。 – softwaresupply

関連する問題