0

Ich habe einen RecyclerView mit einigen Videoelementen und sie werden jedes Mal neu gestartet, wenn sie nicht auf dem Bildschirm erscheinen. Ich habe versucht:Videos in RecyclerView: Gibt es eine Möglichkeit, den Neustart zu verhindern, wenn der Bildschirm nicht angezeigt wird?

recyclerView.getRecycledViewPool().setMaxRecycledViews(RecyclerViewAdapter.TYPE_VIDEO, 0); 

aber kein Erfolg. Ich habe auch versucht zu tun:

holder.setIsRecyclable(false) 

in meinem Adapter, aber Videos neu starten noch jedes Mal.

Gibt es eine Möglichkeit, den Neustart von Videos zu stoppen und sie zu pausieren und wieder aufzunehmen, sobald sie wieder auf dem Bildschirm angezeigt werden?

Die Videos sind remote, nicht lokal. Und ich benutze eine Klasse Erweiterung TextureView, nicht die Android VideoView

Antwort

0

Edit: Ich missverstanden die Frage. Siehe ursprüngliche Antwort unten.

Ich denke, Sie haben zwei Möglichkeiten:

  1. Hässlich, nur möglich, wenn die Liste wird nicht zu lange ™ sein und den Zweck der recyclerview untergraben: setItemViewCacheSize(int) verwenden, um die Anzahl der viewholders zu erhöhen, dass werden auf die Anzahl der Videos gepuffert und pausieren und spielen während des Anhängens/Trennens.
  2. viel besser: Speichern und Wiederherstellen der aktuellen Wiedergabe Timestamp jedes Video, wenn der Viewholder angeschlossen/detached wird.

Sie können ein RecyclerView.OnChildAttachStateChangeListener verwenden, die aufgerufen wird, wenn eine Ansicht angebracht/entfernt. es wie folgt tun:

mRecyclerView.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() { 
    @Override 
    public void onChildViewAttachedToWindow(View view) { 
     YourTextureView yourTextureView = (YourTextureView) view.findViewById(R.id.yourvideoviewid); 
     if (yourTextureView != null) { 
      // start your video 
     } 
    } 

    @Override 
    public void onChildViewDetachedFromWindow(View view) { 
     YourTextureView yourTextureView = (YourTextureView) view.findViewById(R.id.yourvideoviewid); 
     if (yourTextureView != null) { 
      // stop your video 
     } 
    } 
}); 
+0

habe ich versucht, dass aber Videos halten, sobald sie gehen und auf dem Bildschirm neu zu starten :( – moyo

+0

missunderstood ich Ihre Frage und meine Antwort aktualisiert – wedi

Verwandte Themen