package com.application.zhangshi_app_android.ui.function; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; import com.android.app_base.base.BaseConfig; import com.android.app_base.base.view.BaseFragment; import com.android.app_base.base.viewmodel.BaseViewModel; import com.android.app_base.utils.GlideUtil; import com.application.zhangshi_app_android.R; import com.application.zhangshi_app_android.bean.BannerBean; import com.application.zhangshi_app_android.databinding.FragmentImageCarouselBinding; import com.youth.banner.Banner; import com.youth.banner.adapter.BannerImageAdapter; import com.youth.banner.config.IndicatorConfig; import com.youth.banner.holder.BannerImageHolder; import com.youth.banner.indicator.CircleIndicator; import java.io.Serializable; import java.util.ArrayList; import java.util.List; /** * @author Ljj * @date 2023.07.16. 23:23 * @desc 功能主页的图片轮播 Fragment */ public class ImageCarouselFragment extends BaseFragment { private List imageList; private List chooseList = new ArrayList<>(); private BannerImageAdapter adapter; private ImageCarouselFragment() { } public static ImageCarouselFragment newInstance() { ImageCarouselFragment fragment = new ImageCarouselFragment(); Bundle args = new Bundle(); fragment.setArguments(args); return fragment; } public void setImageList(List imageList) { this.imageList = imageList; Bundle args = new Bundle(); args.putSerializable("imgList", (Serializable) imageList); setArguments(args); if (isAdded()){ if (imageList == null) { return; } chooseList = new ArrayList<>(); //选出被选中的图片 for (BannerBean bean : imageList) { if (bean.getChoose() == 1) { chooseList.add(bean); } } if (chooseList == null || chooseList.size() == 0) { binding.layoutDataNull.setVisibility(View.VISIBLE); binding.banner.setVisibility(View.GONE); } else { binding.layoutDataNull.setVisibility(View.GONE); binding.banner.setVisibility(View.VISIBLE); if (adapter != null) { adapter.setDatas(chooseList); } } } } public List getImageList() { return imageList; } @Override protected int getLayoutId() { return R.layout.fragment_image_carousel; } @Override protected int getVariableId() { return 0; } @Override protected void initParam() { if (getArguments() != null) { imageList = (List) getArguments().getSerializable("imgList"); } } @Override protected void initView() { if (imageList != null) { chooseList = new ArrayList<>(); //选出被选中的图片 for (BannerBean bean : imageList) { if (bean.getChoose() == 1) { chooseList.add(bean); } } if (chooseList == null || chooseList.size() == 0) { binding.layoutDataNull.setVisibility(View.VISIBLE); binding.banner.setVisibility(View.GONE); } else { binding.layoutDataNull.setVisibility(View.GONE); binding.banner.setVisibility(View.VISIBLE); if (adapter != null) { adapter.setDatas(chooseList); } } } adapter = new BannerImageAdapter(chooseList) { @Override public void onBindView(BannerImageHolder holder, BannerBean data, int position, int size) { String url = data.getUrl(); if (url.contains("profile/upload")) {//如果是上传到服务器的图片 //只取profile/upload以后的部分 url = url.substring(url.indexOf("profile/upload")); url = BaseConfig.BASE_URL_DOMAIN + "/" + url; } GlideUtil.loadImage(url, holder.imageView); } @Override public BannerImageHolder onCreateHolder(ViewGroup parent, int viewType) { ImageView imageView = new ImageView(parent.getContext()); //注意,必须设置为match_parent,这个是viewpager2强制要求的 ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); imageView.setLayoutParams(params); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); return new BannerImageHolder(imageView); } }; binding.banner.setAdapter(adapter) .addBannerLifecycleObserver(this)//添加生命周期观察者 .setIndicator(new CircleIndicator(getSelfActivity())); if (chooseList == null || chooseList.size() == 0) { binding.layoutDataNull.setVisibility(View.VISIBLE); binding.banner.setVisibility(View.GONE); } else { binding.layoutDataNull.setVisibility(View.GONE); binding.banner.setVisibility(View.VISIBLE); if (adapter != null) { adapter.setDatas(chooseList); } } } @Override protected void initData() { } @Override protected void initLiveDataObserve() { } }