Linjiajia
2023-10-07 31b7700b976a46901f67c5d7a00281ca4745fc9f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
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.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<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);
 
        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<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");
 
        }
    }
 
    @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<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() {
 
    }
}