【Kotlin】基础入门介绍二(概念)常量和全局变量初始化-关键词lateinit和const(结合RecyclerView学习)

首先推荐看看最基础的入门介绍
再看看这个

Kotlin 中的常量

  • const
package com.chris.activitypracticebykotlin

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.activity_main.*

/**
* 这回通过练习RecycleView来实现对第三版《第一行代码》的第四章的练习回顾;
* 因为之前的内容都基础,加上很久没用recyclerView来进行编程故使用这个进行巩固
*
*/
class MainActivity : AppCompatActivity() {
   //关键词 - 常量const的应用;一般自能用于顶层设计和单例模式,静态
   companion object{
       const val TAG : String = "HELLO_MAIN_ACTIVITY"
   }
   //延迟初始化
   private lateinit var layoutManager : RecyclerView.LayoutManager
   override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       setContentView(R.layout.activity_main)
       val pandaList = mutableListOf(1,0,1,0,0,0,1)
       val pandaAdapter = PandaAdapter(pandaList)
       //瀑布流布局
       //全局变量是否初始化,判断语句
       if(!::layoutManager.isInitialized) layoutManager = GridLayoutManager(this,2)

       recyclerview.adapter = pandaAdapter
       recyclerview.layoutManager = layoutManager
       Log.d(TAG,"OnCreate")
   }

}
package com.chris.activitypracticebykotlin

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.Adapter
import com.chris.activitypracticebykotlin.PandaAdapter.PandaViewHolder

class PandaAdapter(val pandaList : List<Int>) : Adapter<PandaViewHolder>() {
    //内部类,可继承
    open inner class PandaViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
        public val imageView : ImageView = itemView.findViewById(R.id.imageview_panda)
        public val textView : TextView = itemView.findViewById(R.id.textview_panda)
    }
    inner class PandaLeftViewHolder(itemView: View) : PandaViewHolder(itemView){
        init {
            textView.setText("left")
        }
    }
    inner class PandaRightViewHolder(itemView: View) : PandaViewHolder(itemView){
        init {
            textView.setText("right")
        }
    }

    override fun getItemViewType(position: Int) = pandaList[position]

    //视图构建
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = if(viewType == 1) {
        var view = LayoutInflater.from(parent.context).inflate(R.layout.recyclerview_item_panda, parent, false)
       PandaLeftViewHolder(view)//返回一个view
    }else{
        var view = LayoutInflater.from(parent.context).inflate(R.layout.recyclerview_item_panda, parent, false)
        PandaRightViewHolder(view)//返回一个view
    }

    override fun onBindViewHolder(holder: PandaViewHolder, position: Int) {
    //绑定数值
//        holder.textView.text = "panda${position}"
    }

    override fun getItemCount(): Int {
        return pandaList.size
    }
}

实现效果

视图就自己设计就好,不提供了。请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值