kotlin学习day4:类和函数的使用
来源:互联网 发布:软件公寓什么时候预约 编辑:程序博客网 时间:2024/06/05 02:31
学习了类和函数,那我们就可以简单的使用我们学习的知识:用Kotlin完成一个RecyclerView展示简单的列表
1.创建一个Kotlin Class,名为:ArticlesActivity并加载布局
class ArticlesActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.lbj_act_articles) }}
activity的布局
<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/lbj_articles_view" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v7.widget.RecyclerView></FrameLayout>
2.在onCreate中初始化我们的控件:
//创建一个List并初始化var articlesTitles: List<String> = listOf("1", "2", "3", "4", "5", "6")//初始化RecyclerViewvar vArticles: RecyclerView = find(R.id.lbj_articles_view)//设置recyclerView的布局管理器vArticles.layoutManager = LinearLayoutManager(this)//设置适配器vArticles.adapter = ArticlesAdapter(articlesTitles, this)
3.编写我们的适配器,继承自RecyclerView.Adapter,并编写我们自己的ViewHolder
class ArticlesAdapter(articleTitles: List<String>, context: Context) : RecyclerView.Adapter<ArticlesAdapter.ArticlesViewHolder>() {} class ArticlesViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { var vTitle: TextView = itemView.find(R.id.lbj_articles_title) }
首先有一个含两个参数的主要构造函数,然后在init方法块中初始化变量
var articleTitles: List<String> = listOf()//初始化使其不为null var mContext: Context? = null//可以为null init { this.articleTitles = articleTitles this.mContext = context }
当然也可以
var articleTitles: List<String> = articleTitlesvar mContext: Context = context
更可以在主要构造方法中直接申明,当做全局变量处理
class ArticlesAdapter(var articleTitles: List<String>, var context: Context) : RecyclerView.Adapter<ArticlesAdapter.ArticlesViewHolder>() {}
在需要的地方直接使用articleTitles和context就行
然后重写onBindViewHolder和onCreateViewHolder,getItemCount三个方法
/** * TextView赋值直接使用.text= */ override fun onBindViewHolder(holder: ArticlesViewHolder, position: Int) { holder.vTitle.text = articleTitles[position] } /** * 创建对象并返回,不使用new关键字 */ override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ArticlesViewHolder { return ArticlesViewHolder(View.inflate(mContext, R.layout.lbj_apt_articles_item, null)) } /** * 函数返回值为表达式,直接使用= */ override fun getItemCount(): Int = articleTitles.size
这样使用Kotlin展示一个RecyclerView就完成了.附完整代码
Activity:
class ArticlesActivity : Activity() { //创建一个List并初始化 var articlesTitles: List<String> = listOf("1", "2", "3", "4", "5", "6") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.lbj_act_articles) //初始化RecyclerView var vArticles: RecyclerView = find(R.id.lbj_articles_view) //设置recyclerView的布局管理器 vArticles.layoutManager = LinearLayoutManager(this) //设置适配器 vArticles.adapter = ArticlesAdapter(articlesTitles, this) }}
Adapter:
class ArticlesAdapter(articleTitles: List<String>, context: Context) : RecyclerView.Adapter<ArticlesAdapter.ArticlesViewHolder>() { /** * 定义属性的时候直接使用主要构造函数的参数(没有注明可为null)初始化 * 当然也可以在主要构造方法中直接申明,当做全局变量处理ArticlesAdapter(var articleTitles: List<String>, var context: Context) */ //var articleTitles: List<String> = articleTitles //var mContext: Context = context var articleTitles: List<String> = listOf()//初始化使其不为null var mContext: Context? = null//可以为null init { this.articleTitles = articleTitles this.mContext = context } fun setData(articleTitles: List<String>): Unit { this.articleTitles = articleTitles notifyDataSetChanged() } /** * TextView赋值直接使用.text= */ override fun onBindViewHolder(holder: ArticlesViewHolder, position: Int) { holder.vTitle.text = articleTitles[position] } /** * 创建对象并返回,不使用new关键字 */ override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ArticlesViewHolder { return ArticlesViewHolder(View.inflate(mContext, R.layout.lbj_apt_articles_item, null)) } /** * 函数返回值为表达式,直接使用= */ override fun getItemCount(): Int = articleTitles.size /** * 适配器内部的ViewHolder类,继承自RecyclerView.ViewHolder */ class ArticlesViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { var vTitle: TextView = itemView.find(R.id.lbj_articles_title) }}
阅读全文
0 0
- kotlin学习day4:类和函数的使用
- kotlin的变量和函数
- Kotlin类和函数等相关定义学习(四)
- kotlin的一些学习和使用时遇到的问题
- 3.kotlin 类和函数
- Kotlin的配置和使用
- Kotlin学习记录(二)—— Kotlin的变量、属性、类、构造函数、继承、方法
- kotlin的扩展函数和扩展属性
- Kotlin全局函数的引入和范围
- 【学习总结】python-DAY4-range()函数
- Kotlin学习三之函数和包的定义和流程控制
- Kotlin学习之函数
- kotlin学习day3:函数
- Kotlin学习(7)高阶函数和函数类型
- Kotlin学习(十二): 函数、高级函数和Lambda表达式
- Hello Kotlin(三)类和函数
- Android知识体系梳理笔记五:Kotlin学习笔记一:类和继承以及Anko(全)的基本使用
- Kotlin编程之类的介绍和使用
- 将日志配置文件的error级别改为debug级别, cpu瞬间飙升!
- 数据库设计
- java界面的表格
- 详解设计模式在Spring中的应用
- Java环境变量jdk安装及配置
- kotlin学习day4:类和函数的使用
- 查看mysql数据库及数据表编码格式
- jdbc 批量插入 和mybaits框架批量插入对比
- 用学习曲线 learning curve 来判别过拟合问题
- android developer tiny share-20170622
- 瀑布流布局
- 数据库sql实用脚本
- AndroidStudio演示代码方案
- idea运行单个java的main方法,不用编译整个项目