У меня есть несколько видео, сохраненных в хранилище Firebase, и URL-адреса для них сохраняются в базе данных реального времени, все из firebase. Все видео отображаются в VideoView внутри RecyclerView.
Это код, который я использую для извлечения данных из базы данных:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = rootRef.child("videos");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
VideoModel model = dataSnapshot.getValue(VideoModel.class);
list.add(model);
adapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
И это код, который я использую для загрузки видео с URL-адреса (этот метод вызывается внутри моего адаптера onBindViewHolder
):
private void setVideoUrl(VideoModel model,MyViewHolder holder){
String url = model.getUrl();
Uri uri = Uri.parse(url);
holder.videoView.setVideoURI(uri);
MediaController mediaController = new MediaController(context);
holder.videoView.setMediaController(mediaController);
mediaController.setAnchorView(holder.videoView);
holder.videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
holder.videoView.seekTo(1);
}
});
}
Это отлично работает, но проблема в том, что если я прокручиваю recyclerView вниз, а затем делаю резервную копию, все ранее загруженные видео будут загружены снова. Есть ли способ предотвратить повторную загрузку?