kotlin实现黑马外卖首页APP

Fragment代码实现

class F1 : Fragment(){
    lateinit var ada:ShouyeAda
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
        var view = View.inflate(activity, R.layout.f1, null)
        var rv = view.find<RecyclerView>(R.id.rv)
        rv.layoutManager = LinearLayoutManager(activity)//从上到下的列表视图
        ada = ShouyeAda(view.context)
        rv.adapter = ada
        return view
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        initData()
    }

    val datas:ArrayList<String> = ArrayList<String>()
    private fun initData() {
        for (i in 0 until 10){
            datas.add("我是商家:"+i)
        }
        ada.setData(datas)
    }
}

适配器的实现

class ShouyeAda(val context:Context) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {

    companion object{
        val TYPE_TITLE = 0;
        val TYPE_SELLER = 1
    }

    //不同position对应不同类型
    override fun getItemViewType(position: Int): Int {
        if (position==0){
            return TYPE_TITLE
        }else{
            return TYPE_SELLER
        }
        return super.getItemViewType(position)
    }

    var mDatas:ArrayList<String> = ArrayList()

    fun setData(data:ArrayList<String>){
        this.mDatas = data
        notifyDataSetChanged()
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
        when(viewType){
            TYPE_TITLE->return TitleHolder(View.inflate(context,R.layout.title,null))
            TYPE_SELLER->return SellerHolder(View.inflate(context,R.layout.seller,null))
            else->return TitleHolder(View.inflate(context,R.layout.title,null))
        }
    }

    override fun getItemCount(): Int {
        if (mDatas.size>0) {
            return mDatas.size + 1
        }else{
            return 0
        }
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        val viewType = getItemViewType(position)
        when(viewType){
            TYPE_TITLE->(holder as TitleHolder).bindData("我是大哥")
            TYPE_SELLER->(holder as SellerHolder).bindData(mDatas[position-1])
        }
    }

    inner class SellerHolder(item:View) : RecyclerView.ViewHolder(item) {
        fun bindData(data: String) {
        }
        init{
        }
    }

    var url_maps:HashMap<String,String> = HashMap()
    inner class TitleHolder(item:View) : RecyclerView.ViewHolder(item) {
        val sliderLayout:SliderLayout
        fun bindData(data: String) {
            if (url_maps.size==0){
                url_maps.put("Hannibal", "http://static2.hypable.com/wp-content/uploads/2013/12/hannibal-season-2-release-date.jpg");
                url_maps.put("Big Bang Theory", "http://tvfiles.alphacoders.com/100/hdclearart-10.png");
                url_maps.put("House of Cards", "http://cdn3.nflximg.net/images/3093/2043093.jpg");
                url_maps.put("Game of Thrones", "http://images.boomsbeat.com/data/images/full/19640/game-of-thrones-season-4-jpg.jpg");
                for ((key,value)in url_maps){
                    var textslideView:TextSliderView = TextSliderView(context)
                    textslideView.description(key).image(value)
                    sliderLayout.addSlider(textslideView)
                }
            }
        }
        init{
            sliderLayout = item.findViewById(R.id.slider)
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值