栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android RecyclerView的使用(Kotlin)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android RecyclerView的使用(Kotlin)

RecyclerView作为谷歌推出的一项新控件,在页面上长得像ListView,但它比ListView具有节约内存的优点,尤其在数据量较多时,使用RecyclerView可以大大减少缓存。
本篇简单描述一下RecyclerView的使用在代码里的表现。

显然,一个长得像列表的页面,其中有很多布局相同或相似的Item,我先写一个只含TextView的Item:
新建item.xml文件



    

预览大概长这样:

在RecyclerView中有一个重要的类——RecyclerViewAdapter,这里我们需要新建一个属于上面Item的Adapter类,且继承RecyclerView.Adapter。
此外,adapter中也有一个很重要的类——ViewHolder,这是RecyclerView回收内存机制的一个重要部分:一个ViewHolder负责缓存一个View用于显示,当一个View不在页面显示范围(这个范围不是一定的,一般是页面能够看到的item数+2),那么这个ViewHolder就会被回收,用于hold新的View。
在我们新建的Adapter类中,需要重写三个方法:onCreateViewHolder、onBindViewHolder、getItemCount,简单例子见代码:

package com.example.recyclerview

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView

class MyAdapter(val context: Context) :
    RecyclerView.Adapter() {
    inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
    //创建ViewHolder
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val itemView = LayoutInflater
            .from(context)
            .inflate(R.layout.item, parent, false)
        return MyViewHolder(itemView)
    }
    //数据绑定
    override fun onBindViewHolder(itemViewHolder: MyViewHolder, position: Int) {
        itemViewHolder.itemView.findViewById(R.id.item_text).text="This is item $position"
    }
    //获取item个数
    override fun getItemCount(): Int = 40//设有40个item
}

上面我大概描述,这个页面共有40个Item,每个Item的text是"This is item $position"(这里kotlin的String模板用法不多赘述)。
下面我们要把这个Item放进主页面中,新建一个含RecyclerView控件的activity_main.xml:




    


最后一步,完成MainActivity类

package com.example.recyclerview

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setupRecyclerView()
    }
    fun setupRecyclerView() {
        val adapter = MyAdapter(this)
        val recyclerView = findViewById(R.id.recyclerView)
        //将我们之前为item创建的adapter赋予Main_Activity中的RecyclerView控件。
        recyclerView.adapter = adapter
        //设置布局为垂直线性布局
        val layoutManager = LinearLayoutManager(this)
        layoutManager.orientation=RecyclerView.VERTICAL
        recyclerView.layoutManager = layoutManager
    }
}

自此,一个简单的RecyclerView就完成了,我们可以看下运行界面:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/271405.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号