首先推荐看看最基础的入门介绍
再看看这个
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
}
}
实现效果
视图就自己设计就好,不提供了。