diff --git a/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt new file mode 100644 index 0000000..b8ab0f5 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt @@ -0,0 +1,56 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.br.R + +/** + * 图片在左,文字在右,九宫格Adapter + * */ +class ConnectGridAdapter( + private val context: Context, + private val icons: IntArray, + private val titles: Array +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_connect_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + Glide.with(context) + .load(icons[position]) + .apply(RequestOptions.circleCropTransform()) + .into(holder.imageView) + holder.textView.text = titles[position] + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = icons.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val imageView: ImageView = itemView.findViewById(R.id.imageView) + val textView: TextView = itemView.findViewById(R.id.textView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt new file mode 100644 index 0000000..b8ab0f5 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt @@ -0,0 +1,56 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.br.R + +/** + * 图片在左,文字在右,九宫格Adapter + * */ +class ConnectGridAdapter( + private val context: Context, + private val icons: IntArray, + private val titles: Array +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_connect_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + Glide.with(context) + .load(icons[position]) + .apply(RequestOptions.circleCropTransform()) + .into(holder.imageView) + holder.textView.text = titles[position] + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = icons.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val imageView: ImageView = itemView.findViewById(R.id.imageView) + val textView: TextView = itemView.findViewById(R.id.textView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt new file mode 100644 index 0000000..f4b61b8 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.br.R + +/** + * 主页功能,九宫格Adapter + * */ +class HomeGridAdapter( + context: Context, private val dataRows: Array +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_home_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.homeFunctionView.text = dataRows[position] + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val homeFunctionView: TextView = itemView.findViewById(R.id.homeFunctionView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt new file mode 100644 index 0000000..b8ab0f5 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt @@ -0,0 +1,56 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.br.R + +/** + * 图片在左,文字在右,九宫格Adapter + * */ +class ConnectGridAdapter( + private val context: Context, + private val icons: IntArray, + private val titles: Array +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_connect_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + Glide.with(context) + .load(icons[position]) + .apply(RequestOptions.circleCropTransform()) + .into(holder.imageView) + holder.textView.text = titles[position] + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = icons.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val imageView: ImageView = itemView.findViewById(R.id.imageView) + val textView: TextView = itemView.findViewById(R.id.textView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt new file mode 100644 index 0000000..f4b61b8 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.br.R + +/** + * 主页功能,九宫格Adapter + * */ +class HomeGridAdapter( + context: Context, private val dataRows: Array +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_home_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.homeFunctionView.text = dataRows[position] + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val homeFunctionView: TextView = itemView.findViewById(R.id.homeFunctionView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index d2f7404..07dfe01 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -1,7 +1,22 @@ package com.casic.br.fragment +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.model.BannerImageModel +import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +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 kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* class HomePageFragment : KotlinBaseFragment() { @@ -12,7 +27,59 @@ } override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + imageModels.add(model) + } + + val banner = homeBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@HomePageFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + 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) { + + } + }) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt new file mode 100644 index 0000000..b8ab0f5 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt @@ -0,0 +1,56 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.br.R + +/** + * 图片在左,文字在右,九宫格Adapter + * */ +class ConnectGridAdapter( + private val context: Context, + private val icons: IntArray, + private val titles: Array +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_connect_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + Glide.with(context) + .load(icons[position]) + .apply(RequestOptions.circleCropTransform()) + .into(holder.imageView) + holder.textView.text = titles[position] + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = icons.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val imageView: ImageView = itemView.findViewById(R.id.imageView) + val textView: TextView = itemView.findViewById(R.id.textView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt new file mode 100644 index 0000000..f4b61b8 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.br.R + +/** + * 主页功能,九宫格Adapter + * */ +class HomeGridAdapter( + context: Context, private val dataRows: Array +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_home_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.homeFunctionView.text = dataRows[position] + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val homeFunctionView: TextView = itemView.findViewById(R.id.homeFunctionView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index d2f7404..07dfe01 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -1,7 +1,22 @@ package com.casic.br.fragment +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.model.BannerImageModel +import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +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 kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* class HomePageFragment : KotlinBaseFragment() { @@ -12,7 +27,59 @@ } override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + imageModels.add(model) + } + + val banner = homeBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@HomePageFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + 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) { + + } + }) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt index 795d25c..197a466 100644 --- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt @@ -29,6 +29,9 @@ val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置") val GENDER_ARRAY = arrayListOf("男", "女") val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们") + val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴") + val CONNECT_IMAGE = intArrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话") /** * ============================================================================================= diff --git a/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt new file mode 100644 index 0000000..b8ab0f5 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt @@ -0,0 +1,56 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.br.R + +/** + * 图片在左,文字在右,九宫格Adapter + * */ +class ConnectGridAdapter( + private val context: Context, + private val icons: IntArray, + private val titles: Array +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_connect_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + Glide.with(context) + .load(icons[position]) + .apply(RequestOptions.circleCropTransform()) + .into(holder.imageView) + holder.textView.text = titles[position] + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = icons.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val imageView: ImageView = itemView.findViewById(R.id.imageView) + val textView: TextView = itemView.findViewById(R.id.textView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt new file mode 100644 index 0000000..f4b61b8 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.br.R + +/** + * 主页功能,九宫格Adapter + * */ +class HomeGridAdapter( + context: Context, private val dataRows: Array +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_home_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.homeFunctionView.text = dataRows[position] + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val homeFunctionView: TextView = itemView.findViewById(R.id.homeFunctionView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index d2f7404..07dfe01 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -1,7 +1,22 @@ package com.casic.br.fragment +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.model.BannerImageModel +import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +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 kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* class HomePageFragment : KotlinBaseFragment() { @@ -12,7 +27,59 @@ } override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + imageModels.add(model) + } + + val banner = homeBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@HomePageFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + 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) { + + } + }) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt index 795d25c..197a466 100644 --- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt @@ -29,6 +29,9 @@ val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置") val GENDER_ARRAY = arrayListOf("男", "女") val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们") + val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴") + val CONNECT_IMAGE = intArrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话") /** * ============================================================================================= diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index a97ec1b..e46a31a 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -1,19 +1,120 @@ - - - + android:layout_height="wrap_content"> + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt new file mode 100644 index 0000000..b8ab0f5 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt @@ -0,0 +1,56 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.br.R + +/** + * 图片在左,文字在右,九宫格Adapter + * */ +class ConnectGridAdapter( + private val context: Context, + private val icons: IntArray, + private val titles: Array +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_connect_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + Glide.with(context) + .load(icons[position]) + .apply(RequestOptions.circleCropTransform()) + .into(holder.imageView) + holder.textView.text = titles[position] + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = icons.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val imageView: ImageView = itemView.findViewById(R.id.imageView) + val textView: TextView = itemView.findViewById(R.id.textView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt new file mode 100644 index 0000000..f4b61b8 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.br.R + +/** + * 主页功能,九宫格Adapter + * */ +class HomeGridAdapter( + context: Context, private val dataRows: Array +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_home_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.homeFunctionView.text = dataRows[position] + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val homeFunctionView: TextView = itemView.findViewById(R.id.homeFunctionView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index d2f7404..07dfe01 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -1,7 +1,22 @@ package com.casic.br.fragment +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.model.BannerImageModel +import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +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 kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* class HomePageFragment : KotlinBaseFragment() { @@ -12,7 +27,59 @@ } override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + imageModels.add(model) + } + + val banner = homeBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@HomePageFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + 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) { + + } + }) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt index 795d25c..197a466 100644 --- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt @@ -29,6 +29,9 @@ val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置") val GENDER_ARRAY = arrayListOf("男", "女") val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们") + val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴") + val CONNECT_IMAGE = intArrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话") /** * ============================================================================================= diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index a97ec1b..e46a31a 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -1,19 +1,120 @@ - - - + android:layout_height="wrap_content"> + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/item_connect_rv_g.xml b/app/src/main/res/layout/item_connect_rv_g.xml new file mode 100644 index 0000000..cf3b023 --- /dev/null +++ b/app/src/main/res/layout/item_connect_rv_g.xml @@ -0,0 +1,24 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt new file mode 100644 index 0000000..b8ab0f5 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/ConnectGridAdapter.kt @@ -0,0 +1,56 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.br.R + +/** + * 图片在左,文字在右,九宫格Adapter + * */ +class ConnectGridAdapter( + private val context: Context, + private val icons: IntArray, + private val titles: Array +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_connect_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + Glide.with(context) + .load(icons[position]) + .apply(RequestOptions.circleCropTransform()) + .into(holder.imageView) + holder.textView.text = titles[position] + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = icons.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val imageView: ImageView = itemView.findViewById(R.id.imageView) + val textView: TextView = itemView.findViewById(R.id.textView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt b/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt new file mode 100644 index 0000000..f4b61b8 --- /dev/null +++ b/app/src/main/java/com/casic/br/adapter/HomeGridAdapter.kt @@ -0,0 +1,46 @@ +package com.casic.br.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.casic.br.R + +/** + * 主页功能,九宫格Adapter + * */ +class HomeGridAdapter( + context: Context, private val dataRows: Array +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_home_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.homeFunctionView.text = dataRows[position] + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val homeFunctionView: TextView = itemView.findViewById(R.id.homeFunctionView) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt index d2f7404..07dfe01 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -1,7 +1,22 @@ package com.casic.br.fragment +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.model.BannerImageModel +import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +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 kotlinx.android.synthetic.main.fragment_recommend.* +import java.util.* class HomePageFragment : KotlinBaseFragment() { @@ -12,7 +27,59 @@ } override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + imageModels.add(model) + } + + val banner = homeBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@HomePageFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + 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) { + + } + }) } override fun initEvent() { diff --git a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt index 795d25c..197a466 100644 --- a/app/src/main/java/com/casic/br/utils/LocaleConstant.kt +++ b/app/src/main/java/com/casic/br/utils/LocaleConstant.kt @@ -29,6 +29,9 @@ val USER_OPERATE = arrayOf("账号安全", "账号绑定", "支付管理", "地址管理", "系统设置") val GENDER_ARRAY = arrayListOf("男", "女") val SETTINGS_OPERATE = arrayOf("通知设置", "清除缓存", "服务协议", "隐私声明", "关于我们") + val HOME_FUNC_OPERATE = arrayOf("户号管理", "燃气缴费", "历史账单", "用气分析", "服务网点", "采暖补贴") + val CONNECT_IMAGE = intArrayOf(R.mipmap.ic_launcher, R.mipmap.ic_launcher) + val CONNECT_ARRAY = arrayOf("客服电话", "抢修电话") /** * ============================================================================================= diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index a97ec1b..e46a31a 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -1,19 +1,120 @@ - - - + android:layout_height="wrap_content"> + android:orientation="vertical"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/item_connect_rv_g.xml b/app/src/main/res/layout/item_connect_rv_g.xml new file mode 100644 index 0000000..cf3b023 --- /dev/null +++ b/app/src/main/res/layout/item_connect_rv_g.xml @@ -0,0 +1,24 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_home_rv_g.xml b/app/src/main/res/layout/item_home_rv_g.xml new file mode 100644 index 0000000..157b0b5 --- /dev/null +++ b/app/src/main/res/layout/item_home_rv_g.xml @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file