package com.uiui.aios.activity; import android.graphics.Color; import android.util.Log; import android.view.View; import android.widget.ImageView; import androidx.viewpager.widget.ViewPager; import com.bumptech.glide.Glide; import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.android.ActivityEvent; import com.uiui.aios.R; import com.uiui.aios.adapter.HealthCodeAdapter; import com.uiui.aios.base.BaseActivity; import com.uiui.aios.bean.BaseResponse; import com.uiui.aios.bean.HealthCode; import com.uiui.aios.network.NetInterfaceManager; import com.uiui.aios.utils.Utils; import com.uiui.aios.view.ScaleCircleNavigator; import net.lucode.hackware.magicindicator.MagicIndicator; import net.lucode.hackware.magicindicator.ViewPagerHelper; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; import io.reactivex.rxjava3.schedulers.Schedulers; public class CodeActivity extends BaseActivity { @BindView(R.id.viewPager) ViewPager mViewPager; @BindView(R.id.magicIndicator) MagicIndicator mMagicIndicator; @BindView(R.id.iv_nodata) ImageView iv_nodata; private HealthCodeAdapter mHealthCodeAdapter; private ScaleCircleNavigator scaleCircleNavigator; @Override public int getLayoutId() { return R.layout.activity_code; } @Override public void initView() { ButterKnife.bind(this); mHealthCodeAdapter = new HealthCodeAdapter(); mViewPager.setAdapter(mHealthCodeAdapter); scaleCircleNavigator = new ScaleCircleNavigator(this); } @Override public void initData() { getHealthCode(); } private void setImageViews(List healthCodes) { mMagicIndicator.setNavigator(scaleCircleNavigator); scaleCircleNavigator.setCircleCount(healthCodes.size()); scaleCircleNavigator.setNormalCircleColor(Color.DKGRAY); scaleCircleNavigator.setSelectedCircleColor(Color.LTGRAY); scaleCircleNavigator.setCircleClickListener(new ScaleCircleNavigator.OnCircleClickListener() { @Override public void onClick(int index) { } }); ViewPagerHelper.bind(mMagicIndicator, mViewPager); List imageViews = new ArrayList<>(); for (HealthCode healthCode : healthCodes) { ImageView image = new ImageView(this); image.setAdjustViewBounds(true); image.setScaleType(ImageView.ScaleType.FIT_CENTER); Glide.with(this).load(healthCode.getImg()).into(image); imageViews.add(image); } mHealthCodeAdapter.setImageViews(imageViews); mHealthCodeAdapter.notifyDataSetChanged(); } private void getHealthCode() { NetInterfaceManager.getInstance().getHealthCodeApi() .getArticleDetails(Utils.getSerial()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .compose(RxLifecycle.bindUntilEvent(lifecycleSubject, ActivityEvent.DESTROY)) .subscribe(new Observer>>() { @Override public void onSubscribe(@NonNull Disposable d) { Log.e("getHealthCode", "onSubscribe: "); } @Override public void onNext(@NonNull BaseResponse> listBaseResponse) { Log.e("getHealthCode", "onNext: " + listBaseResponse); if (listBaseResponse.code == 200) { List healthCodeList = listBaseResponse.data; setImageViews(healthCodeList); mViewPager.setVisibility(View.VISIBLE); mMagicIndicator.setVisibility(View.VISIBLE); iv_nodata.setVisibility(View.GONE); } else { mViewPager.setVisibility(View.GONE); mMagicIndicator.setVisibility(View.GONE); iv_nodata.setVisibility(View.VISIBLE); } } @Override public void onError(@NonNull Throwable e) { Log.e("getHealthCode", "onError: "); } @Override public void onComplete() { Log.e("getHealthCode", "onComplete: "); } }); } }