2016-11-30 4 views
0

リサイクラービューには簡単なテキストビューの束が表示されますが、一部のテキストビューにはボタンがあります。ビュー所有者パターンを持つRecyclerViewは一時的にスクロール時のリサイクルを防止します

ボタンをクリックすると、その特定のテキストビューの横にプログレスバーが表示され、単純なメディアプレーヤーの進行状況が表示されます。

私は、メディアプレーヤがサウンドとプログレスバーのアニメーションを再生しているときに、ユーザーがスクロールしたときにそのアイテムにスクロールすると、元のフォーメーションに戻ります。

アイテムを一時的に非リサイクルとしてマークする方法はありますか?または再生ビューを再生ビューに戻すためにいくつかの州を設定する必要がありますか?

答えて

0

いいえ、アイテムを非リサイクルとしてマークすることはできません。アダプターのすべてのビューは、より良いパフォーマンスを得るためにリサイクルされることになっています。私ははるかに優れたパフォーマンスを述べたはずです。なぜなら、ビューを100個作成するか、アダプターを1000個作成するのではなく、7〜8個以上しか作成できないからです(画面サイズによって異なります)。ユーザーがスクロールするたびに - Recyclerがその仕事をします。あなたのケースでは、いくつかのデータ構造とそのすべてのものの各アイテムの状態を保存するような、あなたのすべてのアイテムを追跡する必要があります。

+0

私は一度に進捗状況を示す1つのビューしか持っていません。その特定のビューを一時的に非リサイクルにすることは、パフォーマンスに悪影響を及ぼすことはありません。しかし、私はそれを行うためのAPIがない場合は、私は何とか状態を保存する必要がありますね。 – user1017674

+0

ええ、まったく。 'MediaPlayer'の状態を保存し、後でこのコードを実行する必要があります。 'Mediaplayer.seekTo(length); Mediaplayer.start(); ' – nullbyte

0

か、私は戻ってそのプレイビューにリサイクルビューを返すために周りにいくつかの状態を設定しなければならないの

あなたは別にして、一度、各項目の状態を保存するために私の最善の策は次のようになります視聴者はあなたが元の場所に戻るようにプレーヤーを設定します。あなたのアイテムを適切にリサイクルし、それに応じてバインドしてください。さもなければ、間違った時間に設定されているビデオの混乱に終わります。

ビデオロードについては、RecyclerViewのスクロールイベントを制御し、ユーザーが移動を停止した後にのみビデオを開始することもできます。この方法では、不要なバッファリング。

関連する問題