'How reverse the data fetched with FirebaseUI- in adapter Android?

I try to use the FirebaseUI-Realtime Database Android lib to simply display a data set in a viepager2 with recycler-view adapter

When I get the data, I got the oldest data first, and i need to show the latest first . So I need a reverse order. How i can do it in RecyclerView adapter?

MainActivity.java

public class MainActivity extends AppCompatActivity {
           ViewPager2 viewPager2;
    videoadapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        viewPager2 = (ViewPager2) findViewById(R.id.vpager);

        FirebaseRecyclerOptions<videomodel> options = new FirebaseRecyclerOptions.Builder<videomodel>()
                .setQuery(FirebaseDatabase.getInstance().getReference().child("videos"), videomodel.class).build();

        adapter = new videoadapter(options);
        viewPager2.setAdapter(adapter);
    }

    @Override
    protected void onStart() {
        super.onStart();
        adapter.startListening();
     }

}

videoadapter.java

public class videoadapter extends 
    FirebaseRecyclerAdapter<videomodel, videoadapter.myviewholder> {
    
    private Context context;
    private AppCompatActivity activity;
    
    private Timer _timer = new Timer();
    private double positionc;
    private TimerTask check;
    private ProgressBar progressbar11;
    private ViewPager2 viewPager;
    
    public videoadapter(@NonNull FirebaseRecyclerOptions<videomodel> options) {
        super(options);
        
    }
    
    @Override
    protected void onBindViewHolder(@NonNull myviewholder holder, int position, @NonNull videomodel model) {
         
        holder.setdata(model);
        holder.simpleExoPlayer.prepare();
    }
    
    @NonNull
    @Override
    public myviewholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_video_row, parent, false);
        return new myviewholder(view);
        
    }
    
    @Override
    public void onViewAttachedToWindow(videoadapter.myviewholder holder) {
        super.onViewAttachedToWindow(holder);
        
        holder.playerView.getPlayer().seekTo(0);
        holder.playerView.getPlayer().setPlayWhenReady(true);
        holder.playerView.getPlayer().prepare();
    }
    
    @Override
    public void onViewDetachedFromWindow(videoadapter.myviewholder holder) {
        super.onViewDetachedFromWindow(holder);
        
        holder.playerView.getPlayer().setPlayWhenReady(false);
        holder.playerView.getPlayer().stop();
    }
    
    class myviewholder extends RecyclerView.ViewHolder {
        PlayerView playerView;
        SimpleExoPlayer simpleExoPlayer;
        LinearLayout sec_mid;
        ProgressBar progressbar1;
        DefaultTrackSelector trackSelector;
        ImageView play,pause;
        TextView title,desc;
        
        public myviewholder(@NonNull View view) {
            super(view);
            
            playerView = (PlayerView) view.findViewById(R.id.statusSliderVideo);
            sec_mid = (LinearLayout) view.findViewById(R.id.sec_controlvid1);
            progressbar1 = (ProgressBar) view.findViewById(R.id.progressbar11);
            play = (ImageView) view.findViewById(R.id.exo_play);
            pause = (ImageView) view.findViewById(R.id.exo_pause);
            title = (TextView) view.findViewById(R.id.textVideoTitle);
            desc = (TextView) view.findViewById(R.id.textVideoDescription);
            
        }
        
        void setdata(videomodel obj) {
            progressbar1.getProgressDrawable().setColorFilter(Color.WHITE, android.graphics.PorterDuff.Mode.SRC_IN);
            
            progressbar1.setIndeterminate(true);
            
            title.setText(obj.getTitle());
            desc.setText(obj.getDesc());
            
            // get data
            Uri videoUri = Uri.parse(obj.getUrl());
            
            simpleExoPlayer = new SimpleExoPlayer.Builder(playerView.getContext()).build();
            
            playerView.setPlayer(simpleExoPlayer);
            playerView.setKeepScreenOn(true);
            
            
            MediaItem mediaItem = MediaItem.fromUri(videoUri);
            simpleExoPlayer.setMediaItem(mediaItem);
            simpleExoPlayer.prepare();
            
            
            playerView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View _view) {
                    if (simpleExoPlayer.isPlaying()) {
                        simpleExoPlayer.pause();
                    } else {
                        simpleExoPlayer.play();
                    }
                }
            });
            
            simpleExoPlayer.addListener(new Player.Listener() {
                
                @Override
                public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
                    
                    if (playbackState == Player.STATE_BUFFERING) {
                        
                        progressbar1.setIndeterminate(true);
                        
                        } else {
                        
                        progressbar1.setIndeterminate(false);
                    }
                    
                    if (playbackState == Player.STATE_ENDED) {
                        
                        simpleExoPlayer.seekTo(0);
                        simpleExoPlayer.setPlayWhenReady(true);
                        
                    }
                }
            });
            
            Activity activity = new Activity();
            
            check = new TimerTask() {
                @Override
                public void run() {
                    activity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            
                            progressbar1.setMax((int) simpleExoPlayer.getDuration());
                            progressbar1.setProgress((int) simpleExoPlayer.getCurrentPosition());
                            
                        }
                    });
                }
            };
            _timer.scheduleAtFixedRate(check, (int) (0), (int) (1));
        }
    }
}

videomodel

public class videomodel {
    String desc,title,url;

    public videomodel(String desc, String title, String url) {
        this.desc = desc;
        this.title = title;
        this.url = url;
    }
    videomodel()
    {

    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }
}


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source