博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kotlin和RecyclerView的一个demo
阅读量:7250 次
发布时间:2019-06-29

本文共 3118 字,大约阅读时间需要 10 分钟。

Kotlin和RecyclerView的一个demo

Kotlin最近比较火,我简单学了一下,写了个小demo,RecyclerView的.

1.使用到的东西

  • 语言:Kotlin
  • RecyclerView
  • OkHttp3
  • RxJava
  • RxAndroid
  • Glide
  • Gson

2.需要引入的库

implementation 'com.android.support:recyclerview-v7:26.0.0'implementation 'com.squareup.okhttp3:okhttp:3.8.1'implementation 'io.reactivex.rxjava2:rxjava:2.1.2'implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'implementation 'com.google.code.gson:gson:2.8.1'implementation 'com.github.bumptech.glide:glide:4.0.0'复制代码

3.首先来看一下RecyclerView子项的布局吧

item_news.xml 就是一个ImageView和一个TextView

复制代码

4.model,模型类

/**	 * description:	 * author feiyang	 * create at 2017/8/3 17:37	 */	data class News(		        @SerializedName("author_name")	        var authorName: String?,	        @SerializedName("category")	        var category: String?,	        @SerializedName("date")	        var date: String?,	        @SerializedName("thumbnail_pic_s")	        var thumbnailPicS: String?,	        @SerializedName("title")	        var title: String?,	        @SerializedName("uniquekey")	        var uniquekey: String?,	        @SerializedName("url")	        var url: String?		)复制代码

5.adapter(*重要)

/**	 * description:RecyclerView的adapter	 * author feiyang	 * create at 2017/8/3 17:41	 */	class NewsAdapter : RecyclerView.Adapter	
{ private var context: Context? = null private var newsList: ArrayList
? = null //这是构造方法 constructor(context: Context, newsList: ArrayList
) { this.context = context this.newsList = newsList } class ViewHolder : RecyclerView.ViewHolder {
var ivDes: ImageView var tvTitle: TextView constructor(itemView: View) : super(itemView) { ivDes = itemView.findViewById(R.id.iv_news_des) tvTitle = itemView.findViewById(R.id.tv_news_title) } } override fun onBindViewHolder(holder: ViewHolder?, position: Int) { if (newsList?.size as Int > position) { val news = newsList?.get(position) //使用Glide加载图片 Glide.with(context).load(news?.thumbnailPicS).into(holder?.ivDes) //设置标题 holder?.tvTitle?.text = news?.title } } override fun getItemCount(): Int { return newsList?.size as Int } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { val view = LayoutInflater.from(parent?.context).inflate(R.layout.item_news, parent, false) return ViewHolder(view) } /** * 添加数据 */ fun addData(dataList: ArrayList
): Unit { //这里不用像java一样判断空了,这里肯定是非空的 if (dataList.size == 0) { return } newsList?.addAll(dataList) notifyDataSetChanged() } /** * 更新数据 */ fun updateData(dataList: ArrayList
): Unit { if (dataList.size==0) { return } newsList?.clear() newsList?.addAll(dataList) notifyDataSetChanged() } }复制代码

最后

核心代码就在上面了,如果想要完整代码的话,去 不要积分....

转载地址:http://gahbm.baihongyu.com/

你可能感兴趣的文章
hibernate一对多双向关联
查看>>
MySQL日志分析工具
查看>>
构建高性能WEB之HTTP首部优化
查看>>
邂逅北京:一座“神奇”的城市?
查看>>
final和static关键字
查看>>
Mysql-半同步
查看>>
GoLang发送邮件demo
查看>>
为Windows 用户准备的简明 Linux 词汇表
查看>>
VMware几个版本的比较
查看>>
vim介绍
查看>>
智能建筑行业奥斯卡:2015年度“中国智能建筑品牌奖“榜单揭晓!
查看>>
如何安装Linux系统
查看>>
[李景山php]每天laravel-20160904|Dispatcher-4
查看>>
利用ICG3000构建L2tp ×××
查看>>
dns记录
查看>>
我的友情链接
查看>>
paramiko在windows上的安装和使用
查看>>
xshll登录脚本
查看>>
让“云”无处不在-Citrix Xenserver之一 环境搭建
查看>>
IT 工具软件集合
查看>>