您现在的位置是:主页 > news > 北京做网站的公司东道/谷歌搜索引擎入口2022

北京做网站的公司东道/谷歌搜索引擎入口2022

admin2025/5/16 9:04:49news

简介北京做网站的公司东道,谷歌搜索引擎入口2022,公司做网站怎么赚钱吗,cm域名做网站查看最新版本 一、概览 recyclerView.scrollToPosition滚动到某个item索引位置adapter.notifyItemInserted( )局部刷新?通知列表有数据插入。notifyDataSetChanged( )全部刷新,不管是新增、删除、修改。 二、基本使用 2.1 添加依赖 implementation(&…

北京做网站的公司东道,谷歌搜索引擎入口2022,公司做网站怎么赚钱吗,cm域名做网站查看最新版本 一、概览 recyclerView.scrollToPosition滚动到某个item索引位置adapter.notifyItemInserted( )局部刷新?通知列表有数据插入。notifyDataSetChanged( )全部刷新,不管是新增、删除、修改。 二、基本使用 2.1 添加依赖 implementation(&…

查看最新版本

一、概览

recyclerView.scrollToPosition滚动到某个item索引位置
adapter.notifyItemInserted( )局部刷新?通知列表有数据插入。
notifyDataSetChanged( )全部刷新,不管是新增、删除、修改。

二、基本使用

2.1 添加依赖

implementation("androidx.recyclerview:recyclerview:1.2.1")

2.2 布局中引入

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout>

2.3 编写适配器Adapter

class FruitAdapter(val fruitList: List<Fruit>) : RecyclerView.Adapter<FruitAdapter.ViewHolder>() {//加载布局并绑定到子选项override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {val view = LayoutInflater.from(parent.context).inflate(R.layout.fruit_item, parent, false)return ViewHolder(view)}//子选项的中的各个控件赋值数据override fun onBindViewHolder(holder: ViewHolder, position: Int) {val fruit = fruitList[position]holder.fruitImage.setImageResource(fruit.imageId)holder.fruitName.text = fruit.name}//设定子选项数量override fun getItemCount() = fruitList.size//获取子选项布局中的各个控件inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {val fruitImage: ImageView = view.findViewById(R.id.fruitImage)val fruitName: TextView = view.findViewById(R.id.fruitName)}
}

2.4 在UI中使用

private val dataList = ArrayList<Fruit>()
//线性布局,设置横向显示
val layoutManager1 = LinearLayoutManager(this)
layoutManager.orientation = LinearLayoutManager.HORIZONTAL
//瀑布流布局,参数一列数、参数二方向
val layoutManager2 = StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL)recyclerView.layoutManager = layoutManager
recyclerView.adapter = FruitAdapter(dataList)

三、显示不同类型的 item

例如消息列表存在:左边收到的消息item、右边发出的消息item:

  1. 不同的 item 都需要单独编写对应的ViewHolder;
  2. 在 getItemViewType() 中,形参position 是 item的索引,结合数据源判断什么情况返回什么 item类型(用Int值表示);
  3. 在 onCreateViewHolder() 中,形参viewType 就是上一步返回的值, 进行判断创建对应 item布局并绑定到对应的ViewHolder;
  4. 在 onBindViewHolder() 中,对形参holder 进行判断是哪种类型,然后分别处理各自的赋值和点击事件。
class MsgAdapter(val msgList: List<Msg>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {override fun getItemViewType(position: Int): Int {val msg = msgList[position]return msg.type}override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = if (viewType == Msg.TYPE_RECEIVED) {val view = LayoutInflater.from(parent.context).inflate(R.layout.msg_left_item, parent, false)LeftViewHolder(view)} else {val view = LayoutInflater.from(parent.context).inflate(R.layout.msg_right_item, parent, false)RightViewHolder(view)}override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {val msg = msgList[position]when (holder) {is LeftViewHolder -> holder.leftMsg.text = msg.contentis RightViewHolder -> holder.rightMsg.text = msg.contentelse -> throw IllegalArgumentException()}}override fun getItemCount() = msgList.sizeinner class LeftViewHolder(view: View) : RecyclerView.ViewHolder(view) {val leftMsg: TextView = view.findViewById(R.id.leftMsg)}inner class RightViewHolder(view: View) : RecyclerView.ViewHolder(view) {val rightMsg: TextView = view.findViewById(R.id.rightMsg)}
}

四、合并显示多个 Adapter

当界面有头部、内容、底部三个区域都用到了列表显示,可以合并他们避免写三个 RecyclerView 实例分别进行设置:

  1. 写三个xml布局:Header、Content、Footer;
  2. 写三个继承自RecyclerViewer.Adapter的适配器;
  3. 创建ConcatAdapter并添加需要合并的适配器。