package com.casic.br.fragment import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant import com.casic.br.view.LoginActivity import com.casic.br.view.MainActivity import com.casic.br.view.WebsiteActivity import com.casic.br.vm.BannerViewModel import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.AlphaPageTransformer import kotlinx.android.synthetic.main.fragment_home.* import java.util.* class HomePageFragment : KotlinBaseFragment() { private lateinit var bannerViewModel: BannerViewModel override fun initLayoutView(): Int = R.layout.fragment_home override fun setupTopBarLayout() { requireContext().initLayoutImmersionBar(rootView) } override fun initData() { bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] //初始化轮播图 initBanner() val homeAdapter = HomeGridAdapter(requireContext(), LocaleConstant.HOME_FUNC_OPERATE) homeRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) homeRecyclerView.adapter = homeAdapter homeAdapter.setOnGridItemClickListener(object : HomeGridAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { } }) val connectGridAdapter = ConnectGridAdapter( requireContext(), LocaleConstant.CONNECT_IMAGE, LocaleConstant.CONNECT_ARRAY ) connectRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) connectRecyclerView.adapter = connectGridAdapter homeAdapter.setOnGridItemClickListener(object : HomeGridAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { } }) } private fun initBanner() { bannerViewModel.obtainBanner() bannerViewModel.listModel.observe(this, { if (it.code == 200) { val banner = homeBannerView as Banner<BannerImageModel.DataModel.RowsModel, BannerImageAdapter<BannerImageModel.DataModel.RowsModel>> banner.apply { setAdapter(object : BannerImageAdapter<BannerImageModel.DataModel.RowsModel>(it.data.rows) { override fun onBindView( holder: BannerImageHolder, data: BannerImageModel.DataModel.RowsModel, position: Int, size: Int ) { Glide.with(holder.itemView) .load(data.bannerPicture) .placeholder(R.mipmap.load_image_error) .into(holder.imageView) } }) indicator = CircleIndicator(requireContext()) addPageTransformer(AlphaPageTransformer()) addBannerLifecycleObserver(this@HomePageFragment) //Banner点击事件 setOnBannerListener { imageModel, _ -> requireContext().navigatePageTo<WebsiteActivity>(imageModel.skipUrl) } } } }) } override fun observeRequestState() { } override fun initEvent() { rightOperateView.setOnClickListener { if (rightOperateView.text == "退出") { AlertControlDialog.Builder() .setContext(requireContext()) .setTitle("退出确认") .setMessage("退出当前账号,将不能同步数据") .setNegativeButton("取消") .setPositiveButton("确认退出") .setOnDialogButtonClickListener(object : AlertControlDialog.OnDialogButtonClickListener { override fun onCancelClick() { } override fun onConfirmClick() { SaveKeyValues.putValue(LocaleConstant.USER_IS_LOGIN, false) requireContext().navigatePageTo<MainActivity>() PageNavigationManager.finishAllActivity() } }) .build().show() } else { requireContext().navigatePageTo<LoginActivity>() } } } override fun onResume() { if (DeserializeModel.isLogin()) { rightOperateView.text = "退出" } else { rightOperateView.text = "登录" } super.onResume() } }