diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_favorite_rv_g.xml b/app/src/main/res/layout/item_favorite_rv_g.xml index a3fe5e3..923206a 100644 --- a/app/src/main/res/layout/item_favorite_rv_g.xml +++ b/app/src/main/res/layout/item_favorite_rv_g.xml @@ -1,26 +1,10 @@ - - - - - - \ No newline at end of file + android:paddingVertical="@dimen/dp_30" + android:text="@string/app_name" + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_favorite_rv_g.xml b/app/src/main/res/layout/item_favorite_rv_g.xml index a3fe5e3..923206a 100644 --- a/app/src/main/res/layout/item_favorite_rv_g.xml +++ b/app/src/main/res/layout/item_favorite_rv_g.xml @@ -1,26 +1,10 @@ - - - - - - \ No newline at end of file + android:paddingVertical="@dimen/dp_30" + android:text="@string/app_name" + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_featured_goods_rv_g.xml b/app/src/main/res/layout/item_featured_goods_rv_g.xml index a3fe5e3..2a529ec 100644 --- a/app/src/main/res/layout/item_featured_goods_rv_g.xml +++ b/app/src/main/res/layout/item_featured_goods_rv_g.xml @@ -1,26 +1,5 @@ - - - - - - \ No newline at end of file + android:layout_height="wrap_content" /> \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_favorite_rv_g.xml b/app/src/main/res/layout/item_favorite_rv_g.xml index a3fe5e3..923206a 100644 --- a/app/src/main/res/layout/item_favorite_rv_g.xml +++ b/app/src/main/res/layout/item_favorite_rv_g.xml @@ -1,26 +1,10 @@ - - - - - - \ No newline at end of file + android:paddingVertical="@dimen/dp_30" + android:text="@string/app_name" + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_featured_goods_rv_g.xml b/app/src/main/res/layout/item_featured_goods_rv_g.xml index a3fe5e3..2a529ec 100644 --- a/app/src/main/res/layout/item_featured_goods_rv_g.xml +++ b/app/src/main/res/layout/item_featured_goods_rv_g.xml @@ -1,26 +1,5 @@ - - - - - - \ No newline at end of file + android:layout_height="wrap_content" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg new file mode 100644 index 0000000..ccd82af --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg Binary files differ diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_favorite_rv_g.xml b/app/src/main/res/layout/item_favorite_rv_g.xml index a3fe5e3..923206a 100644 --- a/app/src/main/res/layout/item_favorite_rv_g.xml +++ b/app/src/main/res/layout/item_favorite_rv_g.xml @@ -1,26 +1,10 @@ - - - - - - \ No newline at end of file + android:paddingVertical="@dimen/dp_30" + android:text="@string/app_name" + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_featured_goods_rv_g.xml b/app/src/main/res/layout/item_featured_goods_rv_g.xml index a3fe5e3..2a529ec 100644 --- a/app/src/main/res/layout/item_featured_goods_rv_g.xml +++ b/app/src/main/res/layout/item_featured_goods_rv_g.xml @@ -1,26 +1,5 @@ - - - - - - \ No newline at end of file + android:layout_height="wrap_content" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg new file mode 100644 index 0000000..ccd82af --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg new file mode 100644 index 0000000..f6f3f29 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg Binary files differ diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_favorite_rv_g.xml b/app/src/main/res/layout/item_favorite_rv_g.xml index a3fe5e3..923206a 100644 --- a/app/src/main/res/layout/item_favorite_rv_g.xml +++ b/app/src/main/res/layout/item_favorite_rv_g.xml @@ -1,26 +1,10 @@ - - - - - - \ No newline at end of file + android:paddingVertical="@dimen/dp_30" + android:text="@string/app_name" + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_featured_goods_rv_g.xml b/app/src/main/res/layout/item_featured_goods_rv_g.xml index a3fe5e3..2a529ec 100644 --- a/app/src/main/res/layout/item_featured_goods_rv_g.xml +++ b/app/src/main/res/layout/item_featured_goods_rv_g.xml @@ -1,26 +1,5 @@ - - - - - - \ No newline at end of file + android:layout_height="wrap_content" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg new file mode 100644 index 0000000..ccd82af --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg new file mode 100644 index 0000000..f6f3f29 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg new file mode 100644 index 0000000..94e83ef --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg Binary files differ diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_favorite_rv_g.xml b/app/src/main/res/layout/item_favorite_rv_g.xml index a3fe5e3..923206a 100644 --- a/app/src/main/res/layout/item_favorite_rv_g.xml +++ b/app/src/main/res/layout/item_favorite_rv_g.xml @@ -1,26 +1,10 @@ - - - - - - \ No newline at end of file + android:paddingVertical="@dimen/dp_30" + android:text="@string/app_name" + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_featured_goods_rv_g.xml b/app/src/main/res/layout/item_featured_goods_rv_g.xml index a3fe5e3..2a529ec 100644 --- a/app/src/main/res/layout/item_featured_goods_rv_g.xml +++ b/app/src/main/res/layout/item_featured_goods_rv_g.xml @@ -1,26 +1,5 @@ - - - - - - \ No newline at end of file + android:layout_height="wrap_content" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg new file mode 100644 index 0000000..ccd82af --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg new file mode 100644 index 0000000..f6f3f29 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg new file mode 100644 index 0000000..94e83ef --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_1.png b/app/src/main/res/mipmap-xxxhdpi/t_1.png new file mode 100644 index 0000000..efbd99a --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_1.png Binary files differ diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_favorite_rv_g.xml b/app/src/main/res/layout/item_favorite_rv_g.xml index a3fe5e3..923206a 100644 --- a/app/src/main/res/layout/item_favorite_rv_g.xml +++ b/app/src/main/res/layout/item_favorite_rv_g.xml @@ -1,26 +1,10 @@ - - - - - - \ No newline at end of file + android:paddingVertical="@dimen/dp_30" + android:text="@string/app_name" + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_featured_goods_rv_g.xml b/app/src/main/res/layout/item_featured_goods_rv_g.xml index a3fe5e3..2a529ec 100644 --- a/app/src/main/res/layout/item_featured_goods_rv_g.xml +++ b/app/src/main/res/layout/item_featured_goods_rv_g.xml @@ -1,26 +1,5 @@ - - - - - - \ No newline at end of file + android:layout_height="wrap_content" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg new file mode 100644 index 0000000..ccd82af --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg new file mode 100644 index 0000000..f6f3f29 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg new file mode 100644 index 0000000..94e83ef --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_1.png b/app/src/main/res/mipmap-xxxhdpi/t_1.png new file mode 100644 index 0000000..efbd99a --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_1.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_2.png b/app/src/main/res/mipmap-xxxhdpi/t_2.png new file mode 100644 index 0000000..f59228c --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_2.png Binary files differ diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_favorite_rv_g.xml b/app/src/main/res/layout/item_favorite_rv_g.xml index a3fe5e3..923206a 100644 --- a/app/src/main/res/layout/item_favorite_rv_g.xml +++ b/app/src/main/res/layout/item_favorite_rv_g.xml @@ -1,26 +1,10 @@ - - - - - - \ No newline at end of file + android:paddingVertical="@dimen/dp_30" + android:text="@string/app_name" + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_featured_goods_rv_g.xml b/app/src/main/res/layout/item_featured_goods_rv_g.xml index a3fe5e3..2a529ec 100644 --- a/app/src/main/res/layout/item_featured_goods_rv_g.xml +++ b/app/src/main/res/layout/item_featured_goods_rv_g.xml @@ -1,26 +1,5 @@ - - - - - - \ No newline at end of file + android:layout_height="wrap_content" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg new file mode 100644 index 0000000..ccd82af --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg new file mode 100644 index 0000000..f6f3f29 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg new file mode 100644 index 0000000..94e83ef --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_1.png b/app/src/main/res/mipmap-xxxhdpi/t_1.png new file mode 100644 index 0000000..efbd99a --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_1.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_2.png b/app/src/main/res/mipmap-xxxhdpi/t_2.png new file mode 100644 index 0000000..f59228c --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_2.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_3.png b/app/src/main/res/mipmap-xxxhdpi/t_3.png new file mode 100644 index 0000000..e857645 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_3.png Binary files differ diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_favorite_rv_g.xml b/app/src/main/res/layout/item_favorite_rv_g.xml index a3fe5e3..923206a 100644 --- a/app/src/main/res/layout/item_favorite_rv_g.xml +++ b/app/src/main/res/layout/item_favorite_rv_g.xml @@ -1,26 +1,10 @@ - - - - - - \ No newline at end of file + android:paddingVertical="@dimen/dp_30" + android:text="@string/app_name" + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_featured_goods_rv_g.xml b/app/src/main/res/layout/item_featured_goods_rv_g.xml index a3fe5e3..2a529ec 100644 --- a/app/src/main/res/layout/item_featured_goods_rv_g.xml +++ b/app/src/main/res/layout/item_featured_goods_rv_g.xml @@ -1,26 +1,5 @@ - - - - - - \ No newline at end of file + android:layout_height="wrap_content" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg new file mode 100644 index 0000000..ccd82af --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg new file mode 100644 index 0000000..f6f3f29 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg new file mode 100644 index 0000000..94e83ef --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_1.png b/app/src/main/res/mipmap-xxxhdpi/t_1.png new file mode 100644 index 0000000..efbd99a --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_1.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_2.png b/app/src/main/res/mipmap-xxxhdpi/t_2.png new file mode 100644 index 0000000..f59228c --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_2.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_3.png b/app/src/main/res/mipmap-xxxhdpi/t_3.png new file mode 100644 index 0000000..e857645 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_3.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_4.PNG b/app/src/main/res/mipmap-xxxhdpi/t_4.PNG new file mode 100644 index 0000000..49ac2ad --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_4.PNG Binary files differ diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_favorite_rv_g.xml b/app/src/main/res/layout/item_favorite_rv_g.xml index a3fe5e3..923206a 100644 --- a/app/src/main/res/layout/item_favorite_rv_g.xml +++ b/app/src/main/res/layout/item_favorite_rv_g.xml @@ -1,26 +1,10 @@ - - - - - - \ No newline at end of file + android:paddingVertical="@dimen/dp_30" + android:text="@string/app_name" + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_featured_goods_rv_g.xml b/app/src/main/res/layout/item_featured_goods_rv_g.xml index a3fe5e3..2a529ec 100644 --- a/app/src/main/res/layout/item_featured_goods_rv_g.xml +++ b/app/src/main/res/layout/item_featured_goods_rv_g.xml @@ -1,26 +1,5 @@ - - - - - - \ No newline at end of file + android:layout_height="wrap_content" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg new file mode 100644 index 0000000..ccd82af --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg new file mode 100644 index 0000000..f6f3f29 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg new file mode 100644 index 0000000..94e83ef --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_1.png b/app/src/main/res/mipmap-xxxhdpi/t_1.png new file mode 100644 index 0000000..efbd99a --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_1.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_2.png b/app/src/main/res/mipmap-xxxhdpi/t_2.png new file mode 100644 index 0000000..f59228c --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_2.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_3.png b/app/src/main/res/mipmap-xxxhdpi/t_3.png new file mode 100644 index 0000000..e857645 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_3.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_4.PNG b/app/src/main/res/mipmap-xxxhdpi/t_4.PNG new file mode 100644 index 0000000..49ac2ad --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_4.PNG Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_5.PNG b/app/src/main/res/mipmap-xxxhdpi/t_5.PNG new file mode 100644 index 0000000..22dc0cb --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_5.PNG Binary files differ diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_favorite_rv_g.xml b/app/src/main/res/layout/item_favorite_rv_g.xml index a3fe5e3..923206a 100644 --- a/app/src/main/res/layout/item_favorite_rv_g.xml +++ b/app/src/main/res/layout/item_favorite_rv_g.xml @@ -1,26 +1,10 @@ - - - - - - \ No newline at end of file + android:paddingVertical="@dimen/dp_30" + android:text="@string/app_name" + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_featured_goods_rv_g.xml b/app/src/main/res/layout/item_featured_goods_rv_g.xml index a3fe5e3..2a529ec 100644 --- a/app/src/main/res/layout/item_featured_goods_rv_g.xml +++ b/app/src/main/res/layout/item_featured_goods_rv_g.xml @@ -1,26 +1,5 @@ - - - - - - \ No newline at end of file + android:layout_height="wrap_content" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg new file mode 100644 index 0000000..ccd82af --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg new file mode 100644 index 0000000..f6f3f29 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg new file mode 100644 index 0000000..94e83ef --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_1.png b/app/src/main/res/mipmap-xxxhdpi/t_1.png new file mode 100644 index 0000000..efbd99a --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_1.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_2.png b/app/src/main/res/mipmap-xxxhdpi/t_2.png new file mode 100644 index 0000000..f59228c --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_2.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_3.png b/app/src/main/res/mipmap-xxxhdpi/t_3.png new file mode 100644 index 0000000..e857645 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_3.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_4.PNG b/app/src/main/res/mipmap-xxxhdpi/t_4.PNG new file mode 100644 index 0000000..49ac2ad --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_4.PNG Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_5.PNG b/app/src/main/res/mipmap-xxxhdpi/t_5.PNG new file mode 100644 index 0000000..22dc0cb --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_5.PNG Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_6.PNG b/app/src/main/res/mipmap-xxxhdpi/t_6.PNG new file mode 100644 index 0000000..77e3fda --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_6.PNG Binary files differ diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_favorite_rv_g.xml b/app/src/main/res/layout/item_favorite_rv_g.xml index a3fe5e3..923206a 100644 --- a/app/src/main/res/layout/item_favorite_rv_g.xml +++ b/app/src/main/res/layout/item_favorite_rv_g.xml @@ -1,26 +1,10 @@ - - - - - - \ No newline at end of file + android:paddingVertical="@dimen/dp_30" + android:text="@string/app_name" + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_featured_goods_rv_g.xml b/app/src/main/res/layout/item_featured_goods_rv_g.xml index a3fe5e3..2a529ec 100644 --- a/app/src/main/res/layout/item_featured_goods_rv_g.xml +++ b/app/src/main/res/layout/item_featured_goods_rv_g.xml @@ -1,26 +1,5 @@ - - - - - - \ No newline at end of file + android:layout_height="wrap_content" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg new file mode 100644 index 0000000..ccd82af --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg new file mode 100644 index 0000000..f6f3f29 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg new file mode 100644 index 0000000..94e83ef --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_1.png b/app/src/main/res/mipmap-xxxhdpi/t_1.png new file mode 100644 index 0000000..efbd99a --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_1.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_2.png b/app/src/main/res/mipmap-xxxhdpi/t_2.png new file mode 100644 index 0000000..f59228c --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_2.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_3.png b/app/src/main/res/mipmap-xxxhdpi/t_3.png new file mode 100644 index 0000000..e857645 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_3.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_4.PNG b/app/src/main/res/mipmap-xxxhdpi/t_4.PNG new file mode 100644 index 0000000..49ac2ad --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_4.PNG Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_5.PNG b/app/src/main/res/mipmap-xxxhdpi/t_5.PNG new file mode 100644 index 0000000..22dc0cb --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_5.PNG Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_6.PNG b/app/src/main/res/mipmap-xxxhdpi/t_6.PNG new file mode 100644 index 0000000..77e3fda --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_6.PNG Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_7.PNG b/app/src/main/res/mipmap-xxxhdpi/t_7.PNG new file mode 100644 index 0000000..3b0bdee --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_7.PNG Binary files differ diff --git a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt index 3c32344..d8ca8f7 100644 --- a/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FavoriteAdapter.kt @@ -10,6 +10,7 @@ import com.casic.br.model.FavoriteModel /** + * TODO 现为模拟数据,待后期调整 * 猜你喜欢,九宫格Adapter * */ class FavoriteAdapter( @@ -24,7 +25,7 @@ override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -44,6 +45,6 @@ class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt index 88c3ad6..274005d 100644 --- a/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/FeaturedGoodsAdapter.kt @@ -4,16 +4,18 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.TextView +import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.model.FeaturedGoodsModel /** + * TODO 现为模拟数据,待后期调整 * 精选好物,九宫格Adapter * */ class FeaturedGoodsAdapter( - context: Context, private val dataRows: MutableList + private val context: Context, private val dataRows: MutableList ) : RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) @@ -23,8 +25,12 @@ ) override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { - holder.deviceNameView.text = dataRows[position].deviceName - holder.descriptionView.text = dataRows[position].deviceDesc + Glide.with(context) + .load(dataRows[position].deviceImage) + .placeholder(R.mipmap.load_image_error) + .into(holder.deviceLogoView) +// holder.deviceNameView.text = dataRows[position].deviceName +// holder.descriptionView.text = dataRows[position].deviceDesc holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -43,7 +49,8 @@ } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val deviceLogoView: ImageView = itemView.findViewById(R.id.deviceLogoView) +// val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) +// val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) } } \ 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 82b1a87..caaae87 100644 --- a/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/HomePageFragment.kt @@ -6,9 +6,11 @@ import com.casic.br.R import com.casic.br.adapter.ConnectGridAdapter import com.casic.br.adapter.HomeGridAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.combineImagePath import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.BannerImageModel +import com.casic.br.model.RecommendModel import com.casic.br.utils.DeserializeModel import com.casic.br.utils.GridItemDecoration import com.casic.br.utils.LocaleConstant @@ -102,6 +104,27 @@ } } }) + + //TODO 现为模拟数据,待后期调整 + val imageArray = arrayOf( + "https://gw.alicdn.com/imgextra/i1/1638292152/O1CN01tMPitu1Rlf73Jrbsw_!!1638292152.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2286859561/O1CN01zrNz1S2KUzXGC5Qux_!!2286859561.jpg_Q75.jpg_.webp", + "https://gw.alicdn.com/imgextra/i1/2438527556/O1CN01Q4yxYQ25ghLySaetu_!!2438527556.png_.webp" + ) + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = imageArray[i] + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + override fun onItemClick(position: Int) { + + } + }) } private fun callPhone(phoneNumber: ArrayList) { diff --git a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt index e396c5f..6689187 100644 --- a/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -1,25 +1,33 @@ package com.casic.br.fragment.shop +import androidx.lifecycle.ViewModelProvider import com.bumptech.glide.Glide import com.casic.br.R import com.casic.br.adapter.FavoriteAdapter import com.casic.br.adapter.FeaturedGoodsAdapter +import com.casic.br.extensions.combineImagePath import com.casic.br.model.BannerImageModel import com.casic.br.model.FavoriteModel import com.casic.br.model.FeaturedGoodsModel import com.casic.br.utils.GridItemDecoration +import com.casic.br.utils.LocaleConstant +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.extensions.show import com.youth.banner.Banner import com.youth.banner.adapter.BannerImageAdapter import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.indicator.CircleIndicator import com.youth.banner.transformer.* import kotlinx.android.synthetic.main.fragment_favorite.* import java.util.* class FavoriteFragment : KotlinBaseFragment() { + private lateinit var bannerViewModel: BannerViewModel + override fun initLayoutView(): Int = R.layout.fragment_favorite override fun setupTopBarLayout() { @@ -27,49 +35,16 @@ } override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel.DataModel.RowsModel() - model.bannerName = "测试轮播图" - model.bannerPicture = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + bannerViewModel = ViewModelProvider(this)[BannerViewModel::class.java] + //初始化轮播图 + initBanner() - imageModels.add(model) - } - - val banner = shopBannerView as Banner> - banner.apply { - setAdapter(object : - BannerImageAdapter(imageModels) { - 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 = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@FavoriteFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.bannerName}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val goodsModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_IMAGE.forEachIndexed { index, image -> val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" + model.deviceImage = image + model.deviceName = LocaleConstant.TEST_ARRAY[index] goodsModels.add(model) } @@ -79,16 +54,15 @@ featuredGoodsAdapter.setOnGridItemClickListener(object : FeaturedGoodsAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) - //TODO 模拟数据 + //TODO 现为模拟数据,待后期调整 val favoriteModels = ArrayList() - for (i in 0..5) { + LocaleConstant.TEST_ARRAY.forEach { val model = FavoriteModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" + model.deviceName = it favoriteModels.add(model) } @@ -98,7 +72,7 @@ favoriteAdapter.setOnGridItemClickListener(object : FavoriteAdapter.OnGridItemClickListener { override fun onItemClick(position: Int) { - + "此功能待后续完善".show(requireContext()) } }) } @@ -110,4 +84,38 @@ override fun initEvent() { } + + private fun initBanner() { + bannerViewModel.obtainBanner("", "0") + bannerViewModel.listModel.observe(this, { + if (it.code == 200) { + val banner = shopBannerView as Banner> + banner.apply { + setAdapter(object : + BannerImageAdapter(it.data.rows) { + override fun onBindView( + holder: BannerImageHolder, + data: BannerImageModel.DataModel.RowsModel, + position: Int, + size: Int + ) { + Glide.with(holder.itemView) + .load(data.bannerPicture.combineImagePath()) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = CircleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + requireContext().navigatePageTo(imageModel.skipUrl) + } + } + } + }) + } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java index 81d2e03..685068c 100644 --- a/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java +++ b/app/src/main/java/com/casic/br/model/FeaturedGoodsModel.java @@ -1,11 +1,12 @@ package com.casic.br.model; /** + * TODO 现为模拟数据,待后期调整 * 精选好物数据模型 */ public class FeaturedGoodsModel { private String deviceName; - private String deviceImage; + private int deviceImage; private String deviceDesc; public String getDeviceName() { @@ -16,11 +17,11 @@ this.deviceName = deviceName; } - public String getDeviceImage() { + public int getDeviceImage() { return deviceImage; } - public void setDeviceImage(String deviceImage) { + public void setDeviceImage(int deviceImage) { this.deviceImage = deviceImage; } diff --git a/app/src/main/res/layout/fragment_smart_home.xml b/app/src/main/res/layout/fragment_smart_home.xml index d829e29..5fc41d1 100644 --- a/app/src/main/res/layout/fragment_smart_home.xml +++ b/app/src/main/res/layout/fragment_smart_home.xml @@ -4,4 +4,14 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_kitchen.xml b/app/src/main/res/layout/fragment_smart_kitchen.xml index d829e29..b44f8a0 100644 --- a/app/src/main/res/layout/fragment_smart_kitchen.xml +++ b/app/src/main/res/layout/fragment_smart_kitchen.xml @@ -1,7 +1,17 @@ + android:layout_height="match_parent" + android:orientation="vertical"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_favorite_rv_g.xml b/app/src/main/res/layout/item_favorite_rv_g.xml index a3fe5e3..923206a 100644 --- a/app/src/main/res/layout/item_favorite_rv_g.xml +++ b/app/src/main/res/layout/item_favorite_rv_g.xml @@ -1,26 +1,10 @@ - - - - - - \ No newline at end of file + android:paddingVertical="@dimen/dp_30" + android:text="@string/app_name" + android:textColor="@color/mainTextColor" + android:textSize="@dimen/sp_14" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_featured_goods_rv_g.xml b/app/src/main/res/layout/item_featured_goods_rv_g.xml index a3fe5e3..2a529ec 100644 --- a/app/src/main/res/layout/item_featured_goods_rv_g.xml +++ b/app/src/main/res/layout/item_featured_goods_rv_g.xml @@ -1,26 +1,5 @@ - - - - - - \ No newline at end of file + android:layout_height="wrap_content" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg new file mode 100644 index 0000000..ccd82af --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/no_iot.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg new file mode 100644 index 0000000..f6f3f29 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_home.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg new file mode 100644 index 0000000..94e83ef --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/smart_kitchen.jpg Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_1.png b/app/src/main/res/mipmap-xxxhdpi/t_1.png new file mode 100644 index 0000000..efbd99a --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_1.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_2.png b/app/src/main/res/mipmap-xxxhdpi/t_2.png new file mode 100644 index 0000000..f59228c --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_2.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_3.png b/app/src/main/res/mipmap-xxxhdpi/t_3.png new file mode 100644 index 0000000..e857645 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_3.png Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_4.PNG b/app/src/main/res/mipmap-xxxhdpi/t_4.PNG new file mode 100644 index 0000000..49ac2ad --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_4.PNG Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_5.PNG b/app/src/main/res/mipmap-xxxhdpi/t_5.PNG new file mode 100644 index 0000000..22dc0cb --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_5.PNG Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_6.PNG b/app/src/main/res/mipmap-xxxhdpi/t_6.PNG new file mode 100644 index 0000000..77e3fda --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_6.PNG Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_7.PNG b/app/src/main/res/mipmap-xxxhdpi/t_7.PNG new file mode 100644 index 0000000..3b0bdee --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_7.PNG Binary files differ diff --git a/app/src/main/res/mipmap-xxxhdpi/t_8.PNG b/app/src/main/res/mipmap-xxxhdpi/t_8.PNG new file mode 100644 index 0000000..523cea4 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/t_8.PNG Binary files differ