Автоматическое воспроизведение видео в RecyclerView, как это делает Instagram - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу иметь возможность воспроизводить и приостанавливать видео, прокручивая окно рециркулятора, как в Instagram. Я уже видел много вопросов в stackoverflow об этой теме, но я не знаю, как реализовать решения в моем коде. Итак, у меня есть Recycler Adapter, где я могу получить всю информацию о пользователе из firebase и отобразить ее в своем приложении.

public class FeedRecyclerAdapter extends RecyclerView.Adapter<FeedRecyclerAdapter.ViewHolder> {

private List<Feed>feedList;
private FirebaseFirestore firebaseFirestore;
public Context context;

private FirebaseAuth firebaseAuth;

public FeedRecyclerAdapter(List<Feed> feedList){
    this.feedList = feedList;

}



@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.feed_row, parent, false);
    context = parent.getContext();
    firebaseFirestore = FirebaseFirestore.getInstance();
    firebaseAuth = FirebaseAuth.getInstance();
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(final ViewHolder holder, int position) {

    holder.setIsRecyclable(false);

    final String feedPostId = feedList.get(position).FeedPostId;
    final String currentUserId = firebaseAuth.getCurrentUser().getUid();

    String desc_data = feedList.get(position).getDesc();
    holder.setDesc(desc_data);

    String video_url = feedList.get(position).getVideo_url();
    holder.setFeedVideo(video_url);








}

@Override
public int getItemCount() {
    return feedList.size();
}

public  class ViewHolder extends RecyclerView.ViewHolder{

    private TextView desc;
    private View mView;
    private VideoView videoView;
    private TextView username;





    public ViewHolder(View itemView) {
        super(itemView);
        mView=itemView;


    }
    public void setDesc(String descText){
        desc = mView.findViewById(R.id.post_desc);
        desc.setText(descText);
    }
    public void setFeedVideo(final String downloadUri){
        videoView = mView.findViewById(R.id.postVideo);
        videoView.setVideoPath(downloadUri);
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mediaPlayer) {
                mediaPlayer.setLooping(true);

            }
        });
        videoView.start();

}



}

1 Ответ

0 голосов
/ 07 сентября 2018

Сначала установите RecyclerView с помощью этого ShapeHelper , как показано ниже

SnapHelper snapHelper = new PagerSnapHelper(); snapHelper.attachToRecyclerView(recyclerView);

Затем получите RecyclerView видимый Положение с помощью LayoutManager , как показано ниже

GridLayoutManager layoutManager = ((GridLayoutManager)mRecyclerView.getLayoutManager());
int firstVisiblePosition = layoutManager.findFirstVisibleItemPosition();

Измените LayoutManger с вашим менеджером lyaout, здесь я использую GridLayoutManager.

Для получения дополнительной ссылки здесь ссылка

  1. Прокрутка элемента за один раз
  2. Получить видимую позицию элемента
...