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.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.adapter.BannerImageAdapter;
|
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<FragmentImageCarouselBinding, ImageCarouselFragmentViewModel> {
|
|
private List<BannerBean> imageList;
|
private List<BannerBean> chooseList = new ArrayList<>();
|
private BannerImageAdapter<BannerBean> adapter;
|
private ImageCarouselFragment() {
|
}
|
|
public static ImageCarouselFragment newInstance() {
|
ImageCarouselFragment fragment = new ImageCarouselFragment();
|
Bundle args = new Bundle();
|
fragment.setArguments(args);
|
return fragment;
|
}
|
|
public void setImageList(List<BannerBean> imageList) {
|
this.imageList = imageList;
|
Bundle args = new Bundle();
|
args.putSerializable("imgList", (Serializable) imageList);
|
setArguments(args);
|
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<BannerBean> 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<BannerBean>) getArguments().getSerializable("imgList");
|
if (imageList != null){
|
chooseList = new ArrayList<>();
|
for (BannerBean bannerBean : imageList) {
|
if (bannerBean.getChoose() == 1){
|
chooseList.add(bannerBean);
|
}
|
}
|
}
|
}
|
}
|
|
@Override
|
protected void initView() {
|
if (imageList != null) {
|
chooseList = new ArrayList<>();
|
for (BannerBean bannerBean : imageList) {
|
if (bannerBean.getChoose() == 1){
|
chooseList.add(bannerBean);
|
}
|
}
|
}
|
adapter = new BannerImageAdapter<BannerBean>(chooseList) {
|
@Override
|
public void onBindView(BannerImageHolder holder, BannerBean data, int position, int size) {
|
GlideUtil.loadImage(data.getUrl(), 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() {
|
|
}
|
}
|