diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_selected.xml b/app/src/main/res/drawable/ic_home_selected.xml new file mode 100644 index 0000000..d85de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_selected.xml b/app/src/main/res/drawable/ic_home_selected.xml new file mode 100644 index 0000000..d85de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_black.xml b/app/src/main/res/drawable/ic_left_black.xml index e3af6b5..492ac28 100644 --- a/app/src/main/res/drawable/ic_left_black.xml +++ b/app/src/main/res/drawable/ic_left_black.xml @@ -4,6 +4,6 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_selected.xml b/app/src/main/res/drawable/ic_home_selected.xml new file mode 100644 index 0000000..d85de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_black.xml b/app/src/main/res/drawable/ic_left_black.xml index e3af6b5..492ac28 100644 --- a/app/src/main/res/drawable/ic_left_black.xml +++ b/app/src/main/res/drawable/ic_left_black.xml @@ -4,6 +4,6 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_message.xml b/app/src/main/res/drawable/ic_message.xml new file mode 100644 index 0000000..d283152 --- /dev/null +++ b/app/src/main/res/drawable/ic_message.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_selected.xml b/app/src/main/res/drawable/ic_home_selected.xml new file mode 100644 index 0000000..d85de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_black.xml b/app/src/main/res/drawable/ic_left_black.xml index e3af6b5..492ac28 100644 --- a/app/src/main/res/drawable/ic_left_black.xml +++ b/app/src/main/res/drawable/ic_left_black.xml @@ -4,6 +4,6 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_message.xml b/app/src/main/res/drawable/ic_message.xml new file mode 100644 index 0000000..d283152 --- /dev/null +++ b/app/src/main/res/drawable/ic_message.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_message_selected.xml b/app/src/main/res/drawable/ic_message_selected.xml new file mode 100644 index 0000000..750fcc5 --- /dev/null +++ b/app/src/main/res/drawable/ic_message_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_selected.xml b/app/src/main/res/drawable/ic_home_selected.xml new file mode 100644 index 0000000..d85de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_black.xml b/app/src/main/res/drawable/ic_left_black.xml index e3af6b5..492ac28 100644 --- a/app/src/main/res/drawable/ic_left_black.xml +++ b/app/src/main/res/drawable/ic_left_black.xml @@ -4,6 +4,6 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_message.xml b/app/src/main/res/drawable/ic_message.xml new file mode 100644 index 0000000..d283152 --- /dev/null +++ b/app/src/main/res/drawable/ic_message.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_message_selected.xml b/app/src/main/res/drawable/ic_message_selected.xml new file mode 100644 index 0000000..750fcc5 --- /dev/null +++ b/app/src/main/res/drawable/ic_message_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine.xml b/app/src/main/res/drawable/ic_mine.xml new file mode 100644 index 0000000..76bc2c9 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_selected.xml b/app/src/main/res/drawable/ic_home_selected.xml new file mode 100644 index 0000000..d85de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_black.xml b/app/src/main/res/drawable/ic_left_black.xml index e3af6b5..492ac28 100644 --- a/app/src/main/res/drawable/ic_left_black.xml +++ b/app/src/main/res/drawable/ic_left_black.xml @@ -4,6 +4,6 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_message.xml b/app/src/main/res/drawable/ic_message.xml new file mode 100644 index 0000000..d283152 --- /dev/null +++ b/app/src/main/res/drawable/ic_message.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_message_selected.xml b/app/src/main/res/drawable/ic_message_selected.xml new file mode 100644 index 0000000..750fcc5 --- /dev/null +++ b/app/src/main/res/drawable/ic_message_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine.xml b/app/src/main/res/drawable/ic_mine.xml new file mode 100644 index 0000000..76bc2c9 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine_selected.xml b/app/src/main/res/drawable/ic_mine_selected.xml new file mode 100644 index 0000000..7ee7ae2 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_selected.xml b/app/src/main/res/drawable/ic_home_selected.xml new file mode 100644 index 0000000..d85de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_black.xml b/app/src/main/res/drawable/ic_left_black.xml index e3af6b5..492ac28 100644 --- a/app/src/main/res/drawable/ic_left_black.xml +++ b/app/src/main/res/drawable/ic_left_black.xml @@ -4,6 +4,6 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_message.xml b/app/src/main/res/drawable/ic_message.xml new file mode 100644 index 0000000..d283152 --- /dev/null +++ b/app/src/main/res/drawable/ic_message.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_message_selected.xml b/app/src/main/res/drawable/ic_message_selected.xml new file mode 100644 index 0000000..750fcc5 --- /dev/null +++ b/app/src/main/res/drawable/ic_message_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine.xml b/app/src/main/res/drawable/ic_mine.xml new file mode 100644 index 0000000..76bc2c9 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine_selected.xml b/app/src/main/res/drawable/ic_mine_selected.xml new file mode 100644 index 0000000..7ee7ae2 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shop.xml b/app/src/main/res/drawable/ic_shop.xml new file mode 100644 index 0000000..1cf964d --- /dev/null +++ b/app/src/main/res/drawable/ic_shop.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_selected.xml b/app/src/main/res/drawable/ic_home_selected.xml new file mode 100644 index 0000000..d85de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_black.xml b/app/src/main/res/drawable/ic_left_black.xml index e3af6b5..492ac28 100644 --- a/app/src/main/res/drawable/ic_left_black.xml +++ b/app/src/main/res/drawable/ic_left_black.xml @@ -4,6 +4,6 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_message.xml b/app/src/main/res/drawable/ic_message.xml new file mode 100644 index 0000000..d283152 --- /dev/null +++ b/app/src/main/res/drawable/ic_message.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_message_selected.xml b/app/src/main/res/drawable/ic_message_selected.xml new file mode 100644 index 0000000..750fcc5 --- /dev/null +++ b/app/src/main/res/drawable/ic_message_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine.xml b/app/src/main/res/drawable/ic_mine.xml new file mode 100644 index 0000000..76bc2c9 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine_selected.xml b/app/src/main/res/drawable/ic_mine_selected.xml new file mode 100644 index 0000000..7ee7ae2 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shop.xml b/app/src/main/res/drawable/ic_shop.xml new file mode 100644 index 0000000..1cf964d --- /dev/null +++ b/app/src/main/res/drawable/ic_shop.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shop_selected.xml b/app/src/main/res/drawable/ic_shop_selected.xml new file mode 100644 index 0000000..0fbac75 --- /dev/null +++ b/app/src/main/res/drawable/ic_shop_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_selected.xml b/app/src/main/res/drawable/ic_home_selected.xml new file mode 100644 index 0000000..d85de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_black.xml b/app/src/main/res/drawable/ic_left_black.xml index e3af6b5..492ac28 100644 --- a/app/src/main/res/drawable/ic_left_black.xml +++ b/app/src/main/res/drawable/ic_left_black.xml @@ -4,6 +4,6 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_message.xml b/app/src/main/res/drawable/ic_message.xml new file mode 100644 index 0000000..d283152 --- /dev/null +++ b/app/src/main/res/drawable/ic_message.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_message_selected.xml b/app/src/main/res/drawable/ic_message_selected.xml new file mode 100644 index 0000000..750fcc5 --- /dev/null +++ b/app/src/main/res/drawable/ic_message_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine.xml b/app/src/main/res/drawable/ic_mine.xml new file mode 100644 index 0000000..76bc2c9 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine_selected.xml b/app/src/main/res/drawable/ic_mine_selected.xml new file mode 100644 index 0000000..7ee7ae2 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shop.xml b/app/src/main/res/drawable/ic_shop.xml new file mode 100644 index 0000000..1cf964d --- /dev/null +++ b/app/src/main/res/drawable/ic_shop.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shop_selected.xml b/app/src/main/res/drawable/ic_shop_selected.xml new file mode 100644 index 0000000..0fbac75 --- /dev/null +++ b/app/src/main/res/drawable/ic_shop_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/message_selector.xml b/app/src/main/res/drawable/message_selector.xml index 559ea94..18b94b6 100644 --- a/app/src/main/res/drawable/message_selector.xml +++ b/app/src/main/res/drawable/message_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_selected.xml b/app/src/main/res/drawable/ic_home_selected.xml new file mode 100644 index 0000000..d85de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_black.xml b/app/src/main/res/drawable/ic_left_black.xml index e3af6b5..492ac28 100644 --- a/app/src/main/res/drawable/ic_left_black.xml +++ b/app/src/main/res/drawable/ic_left_black.xml @@ -4,6 +4,6 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_message.xml b/app/src/main/res/drawable/ic_message.xml new file mode 100644 index 0000000..d283152 --- /dev/null +++ b/app/src/main/res/drawable/ic_message.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_message_selected.xml b/app/src/main/res/drawable/ic_message_selected.xml new file mode 100644 index 0000000..750fcc5 --- /dev/null +++ b/app/src/main/res/drawable/ic_message_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine.xml b/app/src/main/res/drawable/ic_mine.xml new file mode 100644 index 0000000..76bc2c9 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine_selected.xml b/app/src/main/res/drawable/ic_mine_selected.xml new file mode 100644 index 0000000..7ee7ae2 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shop.xml b/app/src/main/res/drawable/ic_shop.xml new file mode 100644 index 0000000..1cf964d --- /dev/null +++ b/app/src/main/res/drawable/ic_shop.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shop_selected.xml b/app/src/main/res/drawable/ic_shop_selected.xml new file mode 100644 index 0000000..0fbac75 --- /dev/null +++ b/app/src/main/res/drawable/ic_shop_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/message_selector.xml b/app/src/main/res/drawable/message_selector.xml index 559ea94..18b94b6 100644 --- a/app/src/main/res/drawable/message_selector.xml +++ b/app/src/main/res/drawable/message_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/mine_selector.xml b/app/src/main/res/drawable/mine_selector.xml index 559ea94..b9b0110 100644 --- a/app/src/main/res/drawable/mine_selector.xml +++ b/app/src/main/res/drawable/mine_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_selected.xml b/app/src/main/res/drawable/ic_home_selected.xml new file mode 100644 index 0000000..d85de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_black.xml b/app/src/main/res/drawable/ic_left_black.xml index e3af6b5..492ac28 100644 --- a/app/src/main/res/drawable/ic_left_black.xml +++ b/app/src/main/res/drawable/ic_left_black.xml @@ -4,6 +4,6 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_message.xml b/app/src/main/res/drawable/ic_message.xml new file mode 100644 index 0000000..d283152 --- /dev/null +++ b/app/src/main/res/drawable/ic_message.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_message_selected.xml b/app/src/main/res/drawable/ic_message_selected.xml new file mode 100644 index 0000000..750fcc5 --- /dev/null +++ b/app/src/main/res/drawable/ic_message_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine.xml b/app/src/main/res/drawable/ic_mine.xml new file mode 100644 index 0000000..76bc2c9 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine_selected.xml b/app/src/main/res/drawable/ic_mine_selected.xml new file mode 100644 index 0000000..7ee7ae2 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shop.xml b/app/src/main/res/drawable/ic_shop.xml new file mode 100644 index 0000000..1cf964d --- /dev/null +++ b/app/src/main/res/drawable/ic_shop.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shop_selected.xml b/app/src/main/res/drawable/ic_shop_selected.xml new file mode 100644 index 0000000..0fbac75 --- /dev/null +++ b/app/src/main/res/drawable/ic_shop_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/message_selector.xml b/app/src/main/res/drawable/message_selector.xml index 559ea94..18b94b6 100644 --- a/app/src/main/res/drawable/message_selector.xml +++ b/app/src/main/res/drawable/message_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/mine_selector.xml b/app/src/main/res/drawable/mine_selector.xml index 559ea94..b9b0110 100644 --- a/app/src/main/res/drawable/mine_selector.xml +++ b/app/src/main/res/drawable/mine_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shop_selector.xml b/app/src/main/res/drawable/shop_selector.xml index 559ea94..48ef22c 100644 --- a/app/src/main/res/drawable/shop_selector.xml +++ b/app/src/main/res/drawable/shop_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_selected.xml b/app/src/main/res/drawable/ic_home_selected.xml new file mode 100644 index 0000000..d85de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_black.xml b/app/src/main/res/drawable/ic_left_black.xml index e3af6b5..492ac28 100644 --- a/app/src/main/res/drawable/ic_left_black.xml +++ b/app/src/main/res/drawable/ic_left_black.xml @@ -4,6 +4,6 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_message.xml b/app/src/main/res/drawable/ic_message.xml new file mode 100644 index 0000000..d283152 --- /dev/null +++ b/app/src/main/res/drawable/ic_message.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_message_selected.xml b/app/src/main/res/drawable/ic_message_selected.xml new file mode 100644 index 0000000..750fcc5 --- /dev/null +++ b/app/src/main/res/drawable/ic_message_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine.xml b/app/src/main/res/drawable/ic_mine.xml new file mode 100644 index 0000000..76bc2c9 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine_selected.xml b/app/src/main/res/drawable/ic_mine_selected.xml new file mode 100644 index 0000000..7ee7ae2 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shop.xml b/app/src/main/res/drawable/ic_shop.xml new file mode 100644 index 0000000..1cf964d --- /dev/null +++ b/app/src/main/res/drawable/ic_shop.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shop_selected.xml b/app/src/main/res/drawable/ic_shop_selected.xml new file mode 100644 index 0000000..0fbac75 --- /dev/null +++ b/app/src/main/res/drawable/ic_shop_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/message_selector.xml b/app/src/main/res/drawable/message_selector.xml index 559ea94..18b94b6 100644 --- a/app/src/main/res/drawable/message_selector.xml +++ b/app/src/main/res/drawable/message_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/mine_selector.xml b/app/src/main/res/drawable/mine_selector.xml index 559ea94..b9b0110 100644 --- a/app/src/main/res/drawable/mine_selector.xml +++ b/app/src/main/res/drawable/mine_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shop_selector.xml b/app/src/main/res/drawable/shop_selector.xml index 559ea94..48ef22c 100644 --- a/app/src/main/res/drawable/shop_selector.xml +++ b/app/src/main/res/drawable/shop_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml new file mode 100644 index 0000000..5090bee --- /dev/null +++ b/app/src/main/res/layout/activity_water_heater.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index defbd7a..b67d659 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -43,6 +43,7 @@ + +) : RecyclerView.Adapter() { + + private var layoutInflater: LayoutInflater = LayoutInflater.from(context) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( + layoutInflater.inflate(R.layout.item_favorite_rv_g, parent, false) + ) + + override fun onBindViewHolder(holder: ItemViewHolder, position: Int) { + holder.deviceNameView.text = dataRows[position].deviceName + holder.descriptionView.text = dataRows[position].deviceDesc + holder.itemView.setOnClickListener { + clickListener?.onItemClick(position) + } + } + + override fun getItemCount(): Int = dataRows.size + + private var clickListener: OnGridItemClickListener? = null + + interface OnGridItemClickListener { + fun onItemClick(position: Int) + } + + fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + this.clickListener = clickListener + } + + class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val 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/RecommendAdapter.kt b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt index 84e3596..2744964 100644 --- a/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt +++ b/app/src/main/java/com/casic/br/adapter/RecommendAdapter.kt @@ -4,28 +4,26 @@ 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 import com.casic.br.model.RecommendModel -/** - * 猜你喜欢,九宫格Adapter - * */ class RecommendAdapter( - context: Context, private val dataRows: MutableList -) : RecyclerView.Adapter() { + private val context: Context, + private val dataRows: MutableList +) : + RecyclerView.Adapter() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ItemViewHolder( - layoutInflater.inflate(R.layout.item_recommend_rv_g, parent, false) + layoutInflater.inflate(R.layout.item_recommend_rv_l, parent, false) ) 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].imageLink).into(holder.recommendImageView) holder.itemView.setOnClickListener { clickListener?.onItemClick(position) } @@ -33,18 +31,17 @@ override fun getItemCount(): Int = dataRows.size - private var clickListener: OnGridItemClickListener? = null + private var clickListener: OnItemClickListener? = null - interface OnGridItemClickListener { + interface OnItemClickListener { fun onItemClick(position: Int) } - fun setOnGridItemClickListener(clickListener: OnGridItemClickListener?) { + fun setOnItemClickListener(clickListener: OnItemClickListener?) { this.clickListener = clickListener } class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView) - val descriptionView: TextView = itemView.findViewById(R.id.descriptionView) + val recommendImageView: ImageView = itemView.findViewById(R.id.recommendImageView) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt index c52f538..d93769b 100644 --- a/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/DevicePageFragment.kt @@ -3,12 +3,16 @@ import android.graphics.Typeface import com.casic.br.R import com.casic.br.adapter.AddedDeviceAdapter +import com.casic.br.adapter.RecommendAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.model.AddedDeviceModel +import com.casic.br.model.RecommendModel import com.casic.br.view.AllDeviceActivity +import com.casic.br.view.device.FireplaceActivity +import com.casic.br.view.device.RangeHoodActivity +import com.casic.br.view.device.WaterHeaterActivity import com.pengxh.kt.lite.base.KotlinBaseFragment import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import kotlinx.android.synthetic.main.fragment_device.* import kotlinx.android.synthetic.main.include_main_title.* import java.util.* @@ -24,16 +28,25 @@ } override fun initData() { - //TODO 模拟数据 只显示前三个设备 + //TODO 模拟数据 val deviceModels = ArrayList() - for (i in 0..2) { - val model = AddedDeviceModel() - model.deviceName = "万家乐热水器" - model.deviceModel = "D40-DM1" - model.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" - deviceModels.add(model) - } + val model1 = AddedDeviceModel() + model1.deviceName = "万家乐热水器" + model1.deviceModel = "D40-DM1" + model1.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model1) + val model2 = AddedDeviceModel() + model2.deviceName = "万家乐油烟机" + model2.deviceModel = "CXW-320-W7" + model2.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model2) + val model3 = AddedDeviceModel() + model3.deviceName = "万家乐壁挂炉" + model3.deviceModel = "26-13A3L" + model3.deviceUsedTime = "已使用${Random().nextInt(12)}个月${Random().nextInt(31)}天" + deviceModels.add(model3) + val addedDeviceAdapter = AddedDeviceAdapter(requireContext(), 13f) addedDeviceAdapter.setupDevice(deviceModels) deviceRecyclerView.adapter = addedDeviceAdapter @@ -46,13 +59,41 @@ override fun onItemClick(position: Int) { //TODO 需要根据设备类型显示不同的页面 val deviceModel = deviceModels[position] - deviceModel.deviceName.show(requireContext()) + when { + deviceModel.deviceName.contains("热水器") -> { + requireContext().navigatePageTo(deviceModel.deviceName) + } + deviceModel.deviceName.contains("油烟机") -> { + requireContext().navigatePageTo() + } + deviceModel.deviceName.contains("壁挂炉") -> { + requireContext().navigatePageTo() + } + } } override fun onButtonClick(position: Int) { } }) + + //热门推荐 + //TODO 模拟数据 只显示前三个设备 + val recommendModels = ArrayList() + for (i in 0..2) { + val model = RecommendModel() + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + recommendModels.add(model) + } + val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) + recommendRecyclerView.adapter = recommendAdapter + recommendAdapter.setOnItemClickListener(object : RecommendAdapter.OnItemClickListener { + + override fun onItemClick(position: Int) { + + } + }) } override fun observeRequestState() { diff --git a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt index cc69400..e3f40fd 100644 --- a/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt +++ b/app/src/main/java/com/casic/br/fragment/ShopPageFragment.kt @@ -5,7 +5,7 @@ import com.casic.br.adapter.SubViewPagerAdapter import com.casic.br.extensions.initLayoutImmersionBar import com.casic.br.fragment.shop.ComponentFragment -import com.casic.br.fragment.shop.RecommendFragment +import com.casic.br.fragment.shop.FavoriteFragment import com.casic.br.fragment.shop.SmartHomeFragment import com.casic.br.fragment.shop.SmartKitchenFragment import com.casic.br.utils.LocaleConstant @@ -18,7 +18,7 @@ private var fragmentPages: ArrayList = ArrayList() init { - fragmentPages.add(RecommendFragment()) + fragmentPages.add(FavoriteFragment()) fragmentPages.add(SmartKitchenFragment()) fragmentPages.add(SmartHomeFragment()) fragmentPages.add(ComponentFragment()) 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 new file mode 100644 index 0000000..6caa727 --- /dev/null +++ b/app/src/main/java/com/casic/br/fragment/shop/FavoriteFragment.kt @@ -0,0 +1,109 @@ +package com.casic.br.fragment.shop + +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.model.BannerImageModel +import com.casic.br.model.FavoriteModel +import com.casic.br.model.FeaturedGoodsModel +import com.casic.br.utils.GridItemDecoration +import com.pengxh.kt.lite.base.KotlinBaseFragment +import com.pengxh.kt.lite.extensions.show +import com.youth.banner.Banner +import com.youth.banner.adapter.BannerImageAdapter +import com.youth.banner.holder.BannerImageHolder +import com.youth.banner.indicator.RectangleIndicator +import com.youth.banner.transformer.* +import kotlinx.android.synthetic.main.fragment_favorite.* +import java.util.* + +class FavoriteFragment : KotlinBaseFragment() { + + override fun initLayoutView(): Int = R.layout.fragment_favorite + + override fun setupTopBarLayout() { + + } + + override fun initData() { + //TODO 模拟数据 + val imageModels = ArrayList() + for (i in 0..4) { + val model = BannerImageModel() + model.imageTitle = "测试轮播图" + model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" + + imageModels.add(model) + } + + val banner = shopBannerView + as Banner> + banner.apply { + setAdapter(object : BannerImageAdapter(imageModels) { + override fun onBindView( + holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int + ) { + Glide.with(holder.itemView) + .load(data.imageLink) + .placeholder(R.mipmap.load_image_error) + .into(holder.imageView) + } + }) + indicator = RectangleIndicator(requireContext()) + addPageTransformer(AlphaPageTransformer()) + addBannerLifecycleObserver(this@FavoriteFragment) + + //Banner点击事件 + setOnBannerListener { imageModel, _ -> + "${imageModel.imageTitle}被点击了".show(requireContext()) + } + } + + //TODO 模拟数据 + val goodsModels = ArrayList() + for (i in 0..5) { + val model = FeaturedGoodsModel() + model.deviceName = "******热水器" + model.deviceDesc = "描述文字" + + goodsModels.add(model) + } + val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) + goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) + goodsRecyclerView.adapter = featuredGoodsAdapter + featuredGoodsAdapter.setOnGridItemClickListener(object : + FeaturedGoodsAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + + //TODO 模拟数据 + val favoriteModels = ArrayList() + for (i in 0..5) { + val model = FavoriteModel() + model.deviceName = "智能厨房*****" + model.deviceDesc = "描述文字" + + favoriteModels.add(model) + } + val favoriteAdapter = FavoriteAdapter(requireContext(), favoriteModels) + favoriteGridView.addItemDecoration(GridItemDecoration(requireContext())) + favoriteGridView.adapter = favoriteAdapter + favoriteAdapter.setOnGridItemClickListener(object : + FavoriteAdapter.OnGridItemClickListener { + override fun onItemClick(position: Int) { + + } + }) + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt b/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt deleted file mode 100644 index a013b9e..0000000 --- a/app/src/main/java/com/casic/br/fragment/shop/RecommendFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.casic.br.fragment.shop - -import com.bumptech.glide.Glide -import com.casic.br.R -import com.casic.br.adapter.FeaturedGoodsAdapter -import com.casic.br.adapter.RecommendAdapter -import com.casic.br.model.BannerImageModel -import com.casic.br.model.FeaturedGoodsModel -import com.casic.br.model.RecommendModel -import com.casic.br.utils.GridItemDecoration -import com.pengxh.kt.lite.base.KotlinBaseFragment -import com.pengxh.kt.lite.extensions.show -import com.youth.banner.Banner -import com.youth.banner.adapter.BannerImageAdapter -import com.youth.banner.holder.BannerImageHolder -import com.youth.banner.indicator.RectangleIndicator -import com.youth.banner.transformer.* -import kotlinx.android.synthetic.main.fragment_recommend.* -import java.util.* - -class RecommendFragment : KotlinBaseFragment() { - - override fun initLayoutView(): Int = R.layout.fragment_recommend - - override fun setupTopBarLayout() { - - } - - override fun initData() { - //TODO 模拟数据 - val imageModels = ArrayList() - for (i in 0..4) { - val model = BannerImageModel() - model.imageTitle = "测试轮播图" - model.imageLink = "https://img95.699pic.com/photo/40006/1412.jpg_wh860.jpg" - - imageModels.add(model) - } - - val banner = shopBannerView - as Banner> - banner.apply { - setAdapter(object : BannerImageAdapter(imageModels) { - override fun onBindView( - holder: BannerImageHolder, data: BannerImageModel, position: Int, size: Int - ) { - Glide.with(holder.itemView) - .load(data.imageLink) - .placeholder(R.mipmap.load_image_error) - .into(holder.imageView) - } - }) - indicator = RectangleIndicator(requireContext()) - addPageTransformer(AlphaPageTransformer()) - addBannerLifecycleObserver(this@RecommendFragment) - - //Banner点击事件 - setOnBannerListener { imageModel, _ -> - "${imageModel.imageTitle}被点击了".show(requireContext()) - } - } - - //TODO 模拟数据 - val goodsModels = ArrayList() - for (i in 0..5) { - val model = FeaturedGoodsModel() - model.deviceName = "******热水器" - model.deviceDesc = "描述文字" - - goodsModels.add(model) - } - val featuredGoodsAdapter = FeaturedGoodsAdapter(requireContext(), goodsModels) - goodsRecyclerView.addItemDecoration(GridItemDecoration(requireContext())) - goodsRecyclerView.adapter = featuredGoodsAdapter - featuredGoodsAdapter.setOnGridItemClickListener(object : - FeaturedGoodsAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - - //TODO 模拟数据 - val recommendModels = ArrayList() - for (i in 0..5) { - val model = RecommendModel() - model.deviceName = "智能厨房*****" - model.deviceDesc = "描述文字" - - recommendModels.add(model) - } - val recommendAdapter = RecommendAdapter(requireContext(), recommendModels) - recommendGridView.addItemDecoration(GridItemDecoration(requireContext())) - recommendGridView.adapter = recommendAdapter - recommendAdapter.setOnGridItemClickListener(object : - RecommendAdapter.OnGridItemClickListener { - override fun onItemClick(position: Int) { - - } - }) - } - - override fun observeRequestState() { - - } - - override fun initEvent() { - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/model/FavoriteModel.java b/app/src/main/java/com/casic/br/model/FavoriteModel.java new file mode 100644 index 0000000..ed9f2bb --- /dev/null +++ b/app/src/main/java/com/casic/br/model/FavoriteModel.java @@ -0,0 +1,34 @@ +package com.casic.br.model; + +/** + * 猜你喜欢数据模型 + */ +public class FavoriteModel { + private String deviceName; + private String deviceImage; + private String deviceDesc; + + public String getDeviceName() { + return deviceName; + } + + public void setDeviceName(String deviceName) { + this.deviceName = deviceName; + } + + public String getDeviceImage() { + return deviceImage; + } + + public void setDeviceImage(String deviceImage) { + this.deviceImage = deviceImage; + } + + public String getDeviceDesc() { + return deviceDesc; + } + + public void setDeviceDesc(String deviceDesc) { + this.deviceDesc = deviceDesc; + } +} diff --git a/app/src/main/java/com/casic/br/model/RecommendModel.java b/app/src/main/java/com/casic/br/model/RecommendModel.java index 3ef8b66..6e6502f 100644 --- a/app/src/main/java/com/casic/br/model/RecommendModel.java +++ b/app/src/main/java/com/casic/br/model/RecommendModel.java @@ -1,34 +1,13 @@ package com.casic.br.model; -/** - * 猜你喜欢数据模型 - */ public class RecommendModel { - private String deviceName; - private String deviceImage; - private String deviceDesc; + private String imageLink; - public String getDeviceName() { - return deviceName; + public String getImageLink() { + return imageLink; } - public void setDeviceName(String deviceName) { - this.deviceName = deviceName; - } - - public String getDeviceImage() { - return deviceImage; - } - - public void setDeviceImage(String deviceImage) { - this.deviceImage = deviceImage; - } - - public String getDeviceDesc() { - return deviceDesc; - } - - public void setDeviceDesc(String deviceDesc) { - this.deviceDesc = deviceDesc; + public void setImageLink(String imageLink) { + this.imageLink = imageLink; } } diff --git a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt index 66cb1a4..1db7a3d 100644 --- a/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt +++ b/app/src/main/java/com/casic/br/view/device/WaterHeaterActivity.kt @@ -1,7 +1,38 @@ package com.casic.br.view.device +import com.casic.br.R +import com.casic.br.extensions.initLayoutImmersionBar +import com.gyf.immersionbar.ImmersionBar +import com.pengxh.kt.lite.base.KotlinBaseActivity +import com.pengxh.kt.lite.utils.Constant +import kotlinx.android.synthetic.main.activity_water_heater.* + /** * 热水器 * */ -class WaterHeaterActivity { +class WaterHeaterActivity : KotlinBaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_water_heater + + override fun setupTopBarLayout() { + initLayoutImmersionBar(rootView) + ImmersionBar.with(this).statusBarDarkFont(true).init() + + leftBackView.setOnClickListener { finish() } + titleView.text = intent.getStringExtra(Constant.INTENT_PARAM) + } + + override fun initData() { + + } + + override fun observeRequestState() { + + } + + override fun initEvent() { + rightOperateView.setOnClickListener { + + } + } } \ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_text_color.xml b/app/src/main/res/drawable/bottom_text_color.xml index b284ea3..604984e 100644 --- a/app/src/main/res/drawable/bottom_text_color.xml +++ b/app/src/main/res/drawable/bottom_text_color.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/device_selector.xml b/app/src/main/res/drawable/device_selector.xml index 559ea94..b804df5 100644 --- a/app/src/main/res/drawable/device_selector.xml +++ b/app/src/main/res/drawable/device_selector.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_selector.xml b/app/src/main/res/drawable/home_selector.xml index 559ea94..7c8ec4f 100644 --- a/app/src/main/res/drawable/home_selector.xml +++ b/app/src/main/res/drawable/home_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml index 831c4c4..e9dc9ef 100644 --- a/app/src/main/res/drawable/ic_device.xml +++ b/app/src/main/res/drawable/ic_device.xml @@ -1,39 +1,9 @@ - - - - - - - - - - + android:fillColor="@color/hintTextColor" + android:pathData="M505.81,424.95c-17.33,0 -33.83,-2.48 -46.21,-7.43L202.16,323.46c-21.45,-7.43 -23.93,-18.98 -23.93,-25.58 0,-5.78 3.3,-17.33 23.93,-25.58l256.62,-94.89c12.38,-4.95 28.88,-7.43 46.21,-7.43 17.33,0 33.83,2.48 46.21,7.43L808.64,272.3c21.45,7.43 23.93,18.98 23.93,25.58 0,5.78 -3.3,17.33 -23.93,25.58L552.02,418.35c-12.38,4.13 -28.88,6.6 -46.21,6.6zM450.53,853.2c-5.78,0 -12.38,-0.83 -18.15,-3.3L207.94,764.08c-26.4,-9.9 -46.21,-40.43 -46.21,-70.96L161.73,406.79c0,-25.58 14.03,-42.08 35.48,-42.08 5.78,0 11.55,0.83 17.33,3.3L442.28,453.83c27.23,9.9 49.51,41.26 49.51,70.96v286.32c-0.83,24.75 -18.15,42.08 -41.26,42.08zM566.05,848.24h0.83c-21.45,0 -34.66,-12.38 -34.66,-37.13L532.22,524.79c0,-30.53 18.98,-61.06 45.38,-70.96l224.44,-85.81c5.78,-2.48 12.38,-3.3 18.98,-3.3 23.1,0 40.43,17.33 40.43,42.08L861.45,693.12c0,29.71 -23.1,61.06 -50.33,70.96l-227.74,83.34c-4.95,2.48 -11.55,0.83 -17.33,0.83z" /> diff --git a/app/src/main/res/drawable/ic_device_selected.xml b/app/src/main/res/drawable/ic_device_selected.xml new file mode 100644 index 0000000..c9c940b --- /dev/null +++ b/app/src/main/res/drawable/ic_device_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6d88a1c..642e4d4 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -4,9 +4,9 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_edit_big.xml b/app/src/main/res/drawable/ic_edit_big.xml new file mode 100644 index 0000000..a32b653 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit_big.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000..15304d8 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_home_selected.xml b/app/src/main/res/drawable/ic_home_selected.xml new file mode 100644 index 0000000..d85de29 --- /dev/null +++ b/app/src/main/res/drawable/ic_home_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_left_black.xml b/app/src/main/res/drawable/ic_left_black.xml index e3af6b5..492ac28 100644 --- a/app/src/main/res/drawable/ic_left_black.xml +++ b/app/src/main/res/drawable/ic_left_black.xml @@ -4,6 +4,6 @@ android:viewportWidth="1024" android:viewportHeight="1024"> diff --git a/app/src/main/res/drawable/ic_message.xml b/app/src/main/res/drawable/ic_message.xml new file mode 100644 index 0000000..d283152 --- /dev/null +++ b/app/src/main/res/drawable/ic_message.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_message_selected.xml b/app/src/main/res/drawable/ic_message_selected.xml new file mode 100644 index 0000000..750fcc5 --- /dev/null +++ b/app/src/main/res/drawable/ic_message_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine.xml b/app/src/main/res/drawable/ic_mine.xml new file mode 100644 index 0000000..76bc2c9 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_mine_selected.xml b/app/src/main/res/drawable/ic_mine_selected.xml new file mode 100644 index 0000000..7ee7ae2 --- /dev/null +++ b/app/src/main/res/drawable/ic_mine_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shop.xml b/app/src/main/res/drawable/ic_shop.xml new file mode 100644 index 0000000..1cf964d --- /dev/null +++ b/app/src/main/res/drawable/ic_shop.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_shop_selected.xml b/app/src/main/res/drawable/ic_shop_selected.xml new file mode 100644 index 0000000..0fbac75 --- /dev/null +++ b/app/src/main/res/drawable/ic_shop_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/message_selector.xml b/app/src/main/res/drawable/message_selector.xml index 559ea94..18b94b6 100644 --- a/app/src/main/res/drawable/message_selector.xml +++ b/app/src/main/res/drawable/message_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/mine_selector.xml b/app/src/main/res/drawable/mine_selector.xml index 559ea94..b9b0110 100644 --- a/app/src/main/res/drawable/mine_selector.xml +++ b/app/src/main/res/drawable/mine_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shop_selector.xml b/app/src/main/res/drawable/shop_selector.xml index 559ea94..48ef22c 100644 --- a/app/src/main/res/drawable/shop_selector.xml +++ b/app/src/main/res/drawable/shop_selector.xml @@ -1,5 +1,5 @@ - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_water_heater.xml b/app/src/main/res/layout/activity_water_heater.xml new file mode 100644 index 0000000..5090bee --- /dev/null +++ b/app/src/main/res/layout/activity_water_heater.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_device.xml b/app/src/main/res/layout/fragment_device.xml index 143f3fd..66ace04 100644 --- a/app/src/main/res/layout/fragment_device.xml +++ b/app/src/main/res/layout/fragment_device.xml @@ -9,71 +9,76 @@ - - - - - - -