Linjiajia
2023-07-25 82e57df230ecb744af6c8865f80870ba03c86d89
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
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.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<String> imageList;
    private BannerImageAdapter<String> adapter;
    private ImageCarouselFragment() {
    }
 
    public static ImageCarouselFragment newInstance() {
        ImageCarouselFragment fragment = new ImageCarouselFragment();
        Bundle args = new Bundle();
        fragment.setArguments(args);
        return fragment;
    }
 
    public void setImageList(List<String> imageList) {
        this.imageList = imageList;
        Bundle args = new Bundle();
        args.putSerializable("imgList", (Serializable) imageList);
        setArguments(args);
        if (imageList == null || imageList.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(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<String>) getArguments().getSerializable("imgList");
        }
    }
 
    @Override
    protected void initView() {
        adapter = new BannerImageAdapter<String>(imageList) {
            @Override
            public void onBindView(BannerImageHolder holder, String data, int position, int size) {
                GlideUtil.loadImage(data, 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);
                return new BannerImageHolder(imageView);                    }
        };
        binding.banner.setAdapter(adapter)
                .addBannerLifecycleObserver(this)//添加生命周期观察者
                .setIndicator(new CircleIndicator(getSelfActivity()));
 
        if (imageList == null || imageList.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(imageList);
            }
        }
 
 
    }
 
    @Override
    protected void initData() {
    }
 
    @Override
    protected void initLiveDataObserve() {
 
    }
}