package com.application.zhangshi_app_android.ui.function; import android.os.Bundle; import android.view.View; import androidx.viewpager2.widget.ViewPager2; import com.android.app_base.base.adapter.BaseVp2FragmentAdapter; import com.android.app_base.base.view.BaseFragment; import com.application.zhangshi_app_android.R; import com.application.zhangshi_app_android.bean.BannerBean; import com.application.zhangshi_app_android.databinding.FragmentVideoCarouselBinding; import com.application.zhangshi_app_android.ui.SimpleViewModel; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** * @author Ljj * @date 2023.09.05. 19:35 * @desc 功能主页的视频轮播 Fragment */ public class VideoCarouselFragment extends BaseFragment { private List videoList; private List chooseList; private BaseVp2FragmentAdapter adapter; public VideoCarouselFragment() { } public static VideoCarouselFragment newInstance() { VideoCarouselFragment fragment = new VideoCarouselFragment(); Bundle args = new Bundle(); fragment.setArguments(args); return fragment; } @Override protected int getLayoutId() { return R.layout.fragment_video_carousel; } @Override protected int getVariableId() { return 0; } @Override protected void initParam() { if (getArguments() != null) { videoList = (List) getArguments().getSerializable("videoList"); } } @Override protected void initView() { adapter = new BaseVp2FragmentAdapter<>(this); binding.viewPager.setAdapter(adapter); binding.viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override public void onPageSelected(int position) { super.onPageSelected(position); if (adapter.getFragment(position) != null){ adapter.getFragment(position).startPlay(); } } }); } @Override protected void initData() { if (videoList == null || videoList.size() == 0){ binding.viewPager.setVisibility(View.GONE); binding.layoutDataNull.setVisibility(View.VISIBLE); }else { binding.viewPager.setVisibility(View.VISIBLE); binding.layoutDataNull.setVisibility(View.GONE); chooseList = new ArrayList<>(); for (BannerBean bannerBean : videoList) { if (bannerBean.getChoose() == 1){ chooseList.add(bannerBean); } } if (chooseList.size() == 0){ chooseList = videoList; } adapter.removeFragmentAll(); for (BannerBean bannerBean : chooseList) { VideoFragment videoFragment = VideoFragment.newInstance(bannerBean.getUrl()); videoFragment.setOnPlayListener(new VideoFragment.onPlayListener() { @Override public void onComplete() { if (binding.viewPager.getCurrentItem() == adapter.getItemCount()-1) { binding.viewPager.setCurrentItem(0, false); } binding.viewPager.setCurrentItem(binding.viewPager.getCurrentItem()+1,true); } }); adapter.addFragment(videoFragment); } binding.viewPager.setCurrentItem(0); } } @Override protected void initLiveDataObserve() { } public void setVideoList(List videoList) { //如果内容相同,不刷新 boolean isSame = true; if (this.videoList != null && videoList != null && this.videoList.size() == videoList.size()) { for (int i = 0; i < this.videoList.size(); i++) { if (!this.videoList.get(i).equals(videoList.get(i))) { isSame = false; break; } } } else { isSame = false; } if (isSame){ return; } this.videoList = videoList; Bundle args = new Bundle(); args.putSerializable("videoList", (Serializable) videoList); setArguments(args); if (isAdded()){ initData(); } } public List getVideoList() { return videoList; } }