100行Kotlin实现数据加载,解析,列表显示
来源:互联网 发布:淘宝备份的装修在哪里 编辑:程序博客网 时间:2024/06/05 15:27
程序员就是折腾自己的群体。不断涌出新框架,新语言。逆水行舟,不进则退。
趁着热度,也亲手撸一把kotlin。不是简单的打印hello kotlin的demo。而是app中最常用的请求数据,解析,列表显示
使用的是豆瓣电影Top250的api。
第一次用Kotlin,还是带着java的思想, 总会磕磕绊绊, 不过熟悉之后, 速度就是飞快,代码量骤减啊, 不到一百行。
使用心得:
- 使用data class 创建Bean。不需要再写一堆setter()/getter()函数
- 没有关键字new了,这要习惯
- 不用AsyncTask, 而是用一个库 AsyncAwait, 非常非常简洁
- JSON解析:目前没有发现较好的kotlin native库。所以用Gson。反正是100%兼容java。
Talk is cheap, show me the code GitHub
喜欢给个star吧。
MainActivity.kt
data class ImageBean(var small: String, var large: String, var medium: String) data class MovieBean(var id: String, var title: String, var year: String, var images: ImageBean) data class ResultBean(var count: Int,var start: Int,var subjects: ArrayList<MovieBean>,var title: String) class MainActivity : AppCompatActivity() { lateinit var mRecyclerView : RecyclerView lateinit var adapter: MyAdapter lateinit var linearManager: LinearLayoutManager var movieArray: ArrayList<MovieBean> = ArrayList() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mRecyclerView = findViewById(R.id.recycler_view) as RecyclerView adapter = MyAdapter(this) linearManager = LinearLayoutManager(this) mRecyclerView.adapter = adapter mRecyclerView.layoutManager = linearManager async() { val jsonStr = await { URL("https://api.douban.com/v2/movie/top250").readText() } movieArray = Gson().fromJson(jsonStr, ResultBean::class.java).subjects adapter.setData(movieArray) } } }
MyAdapter.kt实现
package com.tanjinc.hotmovieimport android.content.Contextimport android.support.v7.widget.RecyclerViewimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport android.widget.ImageViewimport android.widget.TextViewimport com.bumptech.glide.Glideimport java.util.*/** * Created by tanjinc on 17/5/19. */class MyAdapter (context: Context) : RecyclerView.Adapter<MyAdapter.ViewHolder>() { var mContext : Context var mData: ArrayList<MovieBean> = ArrayList() init { mContext = context } fun setData(data : ArrayList<MovieBean>) { mData = data notifyDataSetChanged() } override fun getItemCount(): Int = mData.size override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { val view = LayoutInflater.from(mContext).inflate(R.layout.movie_item_layout, null) return ViewHolder(view) } override fun onBindViewHolder(holder: ViewHolder?, position: Int) { holder!!.titleTv.setText(mData.get(position).title) Glide.with(mContext).load(mData.get(position).images.large).into(holder!!.thumbImg) } class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { var thumbImg: ImageView var titleTv : TextView init { titleTv = itemView.findViewById(R.id.title_tv) as TextView thumbImg = itemView.findViewById(R.id.thumb_img) as ImageView } }}
阅读全文
0 0
- 100行Kotlin实现数据加载,解析,列表显示
- 下拉刷新上拉加载数据列表实现(Kotlin版)
- Kotlin实现recyclerView列表
- listview实现数据列表显示
- Kotlin解析数据(九)
- 基于JSON实现数据列表翻页显示
- Android采用ListView实现数据列表显示
- Android采用ListView实现数据列表显示
- Android采用ListView实现数据列表显示
- Android采用ListView实现数据列表显示
- Android采用ListView实现数据列表显示
- Android采用ListView实现数据列表显示
- Android采用ListView实现数据列表显示
- Android采用ListView实现数据列表显示 .
- Android采用ListView实现数据列表显示
- Android采用ListView实现数据列表显示
- Android列表显示_数据后台异步加载
- Android listview加载列表时,无数据,显示默认页
- 【Kotlin从入门到深坑】之基础类型
- C语言打印函数堆栈方法
- React Native、Android、IOS
- 格式化查询+使用伪列level+使用level和lpad()函数对层次化查询结果进行格式化处理
- 2
- 100行Kotlin实现数据加载,解析,列表显示
- Parsing .angular-cli.json failed. Please make sure your .angular-cli.json is valid JSON
- 余弦相似定理和新闻分类
- Java并发编程:Callable、Future和FutureTask
- hadoop2.7.2学习笔记18-HDFS Federation
- 贪心法之埃及分数
- ACM HDU 1421 搬寝室
- 二叉树的实现
- Web项目中使用Log4j实例