MVVM框架进行登录注册以及跳入主页面

本文介绍了ShangchengFragment中如何使用ViewModel、Adapter和RecyclerView展示商品分类与列表,同时展示了Banner轮播图的配置和数据更新机制。后续将涉及商品详情页面和购物车功能,数据存储在Room数据库。
摘要由CSDN通过智能技术生成
package com.example.mb1.Shangcheng

import android.content.Context
import android.media.Image
import android.os.Bundle
import android.provider.MediaStore.Images
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.GridLayoutManager
import com.example.mb1.Apdater.GoodsApdater
import com.example.mb1.Apdater.TypeApdater
import com.example.mb1.Entity.GoodsEntity
import com.example.mb1.Entity.TypeEntity
import com.example.mb1.GlideUtil
import com.example.mb1.R
import com.example.mb1.base.BaseFragment
import com.example.mb1.databinding.FragmentShangchengBinding
import com.youth.banner.BannerConfig
import com.youth.banner.loader.ImageLoader
import dagger.hilt.android.AndroidEntryPoint

@AndroidEntryPoint
class ShangchengFragment : BaseFragment<FragmentShangchengBinding>() {

    private val mviewmodel:Shangchengviewmodel by viewModels()

    //分类
    private lateinit var typeApdater: TypeApdater
    var typelis= mutableListOf<TypeEntity>()

    //商品列表
    private lateinit var goodsApdater: GoodsApdater
    var goodlist= mutableListOf<GoodsEntity>()


    override fun initdata() {
        viewDataBinding.banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR)
        viewDataBinding.banner.setImageLoader(object :ImageLoader(){
            override fun displayImage(context: Context?, path: Any?, imageView: ImageView?) {
                if (context!=null && path!=null && imageView!=null) {
                    GlideUtil.logeimages(context,path as String,imageView)
                }
            }

        })

        //分类
        typeApdater= TypeApdater()
        viewDataBinding.recy.layoutManager=GridLayoutManager(requireContext(),5)
        viewDataBinding.recy.adapter=typeApdater

        //商品
        goodsApdater= GoodsApdater()
        viewDataBinding.recy1.layoutManager=GridLayoutManager(requireContext(),2)
        viewDataBinding.recy1.adapter=goodsApdater

    }

    override fun initview() {
        mviewmodel.getbanners()
        mviewmodel.gettypes()
        mviewmodel.getgoodsss(0,1,10)
    }

    override fun getlayout(): Int {
       return R.layout.fragment_shangcheng
    }

    override fun handserver() {
        super.handserver()

        mviewmodel.bannerlivedata.observe(this){list->
            var imagelist= mutableListOf<String>()
            list.forEach {
                if (!it.imagePath.isNullOrEmpty())
                {
                    imagelist.add(it.imagePath)
                }

            }
            viewDataBinding.banner.setImages(imagelist)
            viewDataBinding.banner.start()

        }

        mviewmodel.typeslivedata.observe(this)
        {
            if (typelis.size>0)
            {
                typelis.clear()
            }
            typelis.addAll(it)
            typeApdater.data=typelis
            typeApdater.notifyDataSetChanged()
        }

        mviewmodel.goodslivedata.observe(this)
        {
            if (goodlist.size>0)
            {
                goodlist.clear()
            }
            goodlist.addAll(it)
            goodsApdater.data=goodlist
            goodsApdater.notifyDataSetChanged()
        }
    }
}

//主页面以及解商品,分类串的方法以及model,viewmodel,

//效果图如下

//这个只是一部分之后会是点击商品进入详情信息页面然后直接根据价格直接添加入购物车,由room数据库进行存储数据

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值