RecycleView的常用方法

  • setAdapter  设置列表的适配器,适配器采用 RecycleView.Adapter;
  • setLayoutManager  设置列表的的布局管理器,包括线性布局管理器 LinearLayoutManager、网格布局管理器GridLayoutManager、瀑布流网格布局管理器 StaggeredGridLayoutManager;
  • addItemDecoration 添加列表项的分割线;
  • removeItenDecoration 移除列表项的分割线;
  • setItemAnimator 设置列表项的增删动画。默认动画可使用系统自带的DefaultItemAnimator;
  • addOnItemTouchListener  添加列表项的触摸监听;
  • removeOnItemTouchListener  移除列表项的触摸监听。

RecycleView的适配器类——RecycleView.Adapter

在调用RecycleView的setAdapter()方法前,必须实现RecycleView.Adapter派生的数据匹配器。下面是RecycleView.Adapter相关的常用方法。

1.自定义适配器必须重写的方法

  • getItemCount  获取列表项的数目
  • onCreateViewHolder  创建整个布局的视图持有者。输入参数中包括视图类型,可根据视图类型家在不同的布局,从而实现带头部的列表布局
  • onBindViewHolder  绑定每项的视图持有者

2.可以重写也可以不重写的方法

  • getItemViewType  返回每项的视图类型。这里返回的视图提供onCreateViewHolder方法的使用

  • getItemId  获取每项的编号

3.可以直接调用的方法

  • scrollToPosition  滚动到指定的位置
  • notifyItemInserted  通知适配器在指定的位置加入新项
  • notifyItemRemoved  通知适配器在指定的位置删除原有项
  • notifyItemChanged  通知适配器在指定位置的项目已发生改变
  • notifyDataSetChanged  通知适配器整个列表的数据已发生改变

以下是我使用RecycleView的一个小Demo的部分代码。

Activity代码使用kotlin写的,在创建的时候需要创建Kotlin文件

先上图片:

代码如下:

MainActivity:

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.widget.LinearLayout
import com.example.wyt.recycleviewtest.Adapter.PeopleListAdapter
import com.example.wyt.recycleviewtest.entity.PeopleEntityclass MainActivity : AppCompatActivity() {var vwPeopleList: RecyclerView? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)initView()}private fun initView() {vwPeopleList = findViewById(R.id.vw_recycle)val layoutManager = LinearLayoutManager(this)layoutManager.orientation = LinearLayout.VERTICALvwPeopleList!!.layoutManager = layoutManagerval adapter = PeopleListAdapter(this,PeopleEntity.getPeopleEntities())vwPeopleList!!.adapter = adapter}
}
PeopleEntity:
import com.example.wyt.recycleviewtest.R;import java.util.ArrayList;
import java.util.List;public class PeopleEntity {private String id;private String name;private String desc;private int imaId;public static List<PeopleEntity> getPeopleEntities() {List<PeopleEntity> peopleEntities = new ArrayList<PeopleEntity>();PeopleEntity peo1 = new PeopleEntity("蒙奇·D·路飞","蒙奇·D·路飞,日本漫画《航海王》的主角,外号“草帽”路飞,草帽海贼团、草帽大船团船长,极恶的世代之一。橡胶果实能力者,悬赏金15亿贝里。" +"梦想是找到传说中的One Piece,成为海贼王。\n" +"路飞性格积极乐观,爱憎分明,而且十分重视伙伴,不甘屈居于他人之下,对任何危险的事物都超感兴趣。和其他传统的海贼所不同的是," +"他并不会为了追求财富而杀戮,而是享受着身为海贼的冒险和自由。",R.mipmap.lufei);PeopleEntity peo2 = new PeopleEntity("罗罗诺亚·索隆","罗罗诺亚·索隆。人称:海贼猎人。日本漫画《\t海贼王\t》及衍生作品中的角色。“草帽一伙”的战斗员,是使用三把刀战斗的三刀流剑士。" +"两年前集结香波地群岛的被称之为“极恶的世代”的十一超新星之一。",R.mipmap.suolong);PeopleEntity peo3 = new PeopleEntity("娜美","娜美,人称小贼猫,悬赏6600万贝里。\n" +"特征是橘色的短发(两年后为波浪长发)和左肩的刺青(风车与橘子的图案)。使用棍术,现在武器为“魔法天候棒”。头脑聪明又机灵," +"精通气象学和航海术,能用身体感知天气,完美指示航路,是个能精确画出航海图的天才航海士。本质上是个细心、善良、重视感情、嫉恶如仇、偶尔有些温柔的能干的女性。" +"最喜欢钱和橘子,梦想是要画出全世界的地图。",R.mipmap.namei);peopleEntities.add(peo1);peopleEntities.add(peo2);peopleEntities.add(peo3);return peopleEntities;}public PeopleEntity(String name, String desc, int imaId) {this.name = name;this.desc = desc;this.imaId = imaId;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}public int getImaId() {return imaId;}public void setImaId(int imaId) {this.imaId = imaId;}
}

DescActivity:

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.ImageView
import android.widget.TextView@Suppress("RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS")
class DescActivity : AppCompatActivity() {var vwIma:ImageView? = nullvar vwName:TextView? = nullvar vwDesc:TextView? = nullvar imaId:Int? = nullvar names:String? = nullvar desc:String? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_desc)initDate()initView()}private fun initDate() {val intent = intentval bundle = intent.extrasnames = bundle.getString("name")imaId = bundle.getInt("imaId")desc = bundle.getString("desc")}private fun initView() {vwIma = this.findViewById(R.id.vw_ima)vwName = this.findViewById(R.id.vw_name)vwDesc = this.findViewById(R.id.vw_desc)vwIma!!.setImageResource(this.imaId!!)vwDesc!!.text = descvwName!!.text = names}
}
PeopleListAdapter:
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;import com.example.wyt.recycleviewtest.DescActivity;
import com.example.wyt.recycleviewtest.R;
import com.example.wyt.recycleviewtest.entity.PeopleEntity;import java.util.List;public class PeopleListAdapter extends RecyclerView.Adapter<PeopleListAdapter.PeopleListHolder> {private Context context;private List<PeopleEntity> mPeopleEntities;static class PeopleListHolder extends ViewHolder{ImageView vwIma;TextView vwName;Button vwClick;public PeopleListHolder(@NonNull View itemView) {super(itemView);vwIma = itemView.findViewById(R.id.vw_item_ima);vwName = itemView.findViewById(R.id.vw_item_name);vwClick = itemView.findViewById(R.id.vw_item_click);}}public PeopleListAdapter(Context context,List<PeopleEntity> peopleEntities){this.context = context;mPeopleEntities = peopleEntities;}@NonNull@Overridepublic PeopleListHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_recycle,viewGroup,false);return new PeopleListHolder(view);}@Overridepublic void onBindViewHolder(@NonNull PeopleListHolder peopleListHolder, final int i) {final PeopleEntity peopleEntity = mPeopleEntities.get(i);peopleListHolder.vwIma.setImageResource(peopleEntity.getImaId());peopleListHolder.vwName.setText(peopleEntity.getName());peopleListHolder.itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(context,DescActivity.class);Bundle bundle = new Bundle();bundle.putString("name",peopleEntity.getName());bundle.putString("desc",peopleEntity.getDesc());bundle.putInt("imaId",peopleEntity.getImaId());intent.putExtras(bundle);context.startActivity(intent);}});}@Overridepublic int getItemCount() {return mPeopleEntities.size();}
}

循环视图——RecycleView相关推荐

  1. Android Studio App开发之循环试图RecyclerView,布局管理器LayoutManager、动态更新循环视图讲解及实战(附源码)

    运行有问题或需要全部源码请点赞关注收藏后评论区留言~~~ 一.循环视图RecyclerView 尽管ListView和GridView分别实现了多行单列和多行多列的列表,使用也很简单,可是它们缺少变化 ...

  2. thinkphp6 循环 视图_ThinkPHP模板里怎么使用 for循环

    展开全部 ThinkPHP模板里使用 for循环 ①使62616964757a686964616fe59b9ee7ad9431333337613861用For标签 用法: 开始值.结束值.步进值和循环 ...

  3. thinkphp6 循环 视图_ThinkPHP模板循环输出Volist标签用法实例详解

    本文实例讲述了ThinkPHP模板循环输出Volist标签用法.分享给大家供大家参考,具体如下: volist 标签用于在模板中循环输出数据集或者多维数组. volist 标签 在模块操作中,sele ...

  4. android 将布局多次添加,android – 如何在布局xml中添加循环视图

    您无法将aar文件添加到Eclipse中的libs文件夹(它不是jar文件) 目前,使用新的RecyclerView的最佳方式是切换到Android Studio并将此依赖项添加到build.grad ...

  5. android在xml中加载大图,android – 如何在布局xml中添加循环视图

    您无法将aar文件添加到Eclipse中的libs文件夹(它不是jar文件) 目前,使用新的RecyclerView的最佳方式是切换到Android Studio并将此依赖项添加到build.grad ...

  6. AndroidApp学习笔记

    Android 发展历程 Android 是一个基于Linux 内核的自由及开发源代码的操作系统 2005 年 8 月由Google收购注资 2007年11月发布Android的源代码 2008 年1 ...

  7. 多视图点云配准算法综述

    作者:杨佳琪,张世坤,范世超等 转载自:华中科技大学学报(自然科学版) 编辑:东岸因为@一点人工一点智能 原文:​​多视图点云配准算法综述​​ 摘要:以多视图点云配准为研究对象,对近二十余年的多视图点 ...

  8. RecyclerView加载sdcard/Music下的音乐列表

    最近我在学习在学习RecyclerView,跟着老司机玩转App,<Android App 开发入门与项目实战>很友好,比较适合新手入门,通过基础知识和案例相结合,慢慢掌握其中要点. 书中 ...

  9. ASP.NET MVC Framework体验(2):显示列表数据

    概述 ASP.NET WebForm下,显示列表数据,经常会使用服务器控件GridView.DataList等.在ASP.NET MVC Framework中,我们有两种方式进行显示数据,一是使用行内 ...

最新文章

  1. 华为,牵手这所新大学!
  2. 音乐处理---H_music.php
  3. 外汇呼叫中心如何在严格监管中存续
  4. ubuntu 安装phpstorm
  5. 137 Single Number II 数组中除了一个数外,其他的数都出现了三次,找出这个只出现一次的数...
  6. Deep Exploit:结合机器学习的全自动渗透测试工具
  7. wxWidgets:wxSimpleHtmlListBox类用法
  8. SAP UI5 应用开发教程之五十六 - SAP UI5 树控件(tree)的开发试读版
  9. SAP Kyma和Marketing Cloud的连接 - Marketing Cloud里的配置
  10. 为《31天成为IT服务达人》征求正式名字
  11. cad钣金展开插件_简单的钣金CAD展开方法
  12. python输出文字和数字加法_用c语言或者python将文件中特定字符串后面的数字相加...
  13. JS 上传图片本地缓存预览
  14. Linux usb3.0 xhci,解决Usb3.0/3.1(XHCI)和磁盘控制器(SRS)驱动 总裁USM、CeoMSX神兵利器
  15. linux开机启动项怎么设置bios,bios怎么设置开机启动项
  16. 响应式布局的基本介绍及原理
  17. ARC 128D - Neq Neq(dp+组合数学+思维)
  18. extjs 数字校园-云资源平台 2014.2.4-班级座位表
  19. 理解计算:从根号2到AlphaGo 第3季 神经网络的数学模型
  20. AI制作粒子消散文字效果

热门文章

  1. 华为OD机试 - 自动曝光(C 语言解题)【独家】
  2. 手机APP开发之MIT Appinventor详细实战教程(十三),云服务器的数据遇到的问题和解决的方法,以及网页客户端的详细使用方法,WIFI通信,数据获取在one net平台的相关应用
  3. Nvidia AGX Xavier GMSL 自动驾驶控制器设计方案
  4. pycharm设置项目编码
  5. 配置linux网络的坑之IPADDR 等出现Command not found
  6. 【四二学堂】jquery方式ajax获取数据并渲染页面
  7. 水晶报表打印纸张设置
  8. Tomcat8安装后tomcat8w.exe点击出现“指定的服务未安装”解决方案
  9. CF B. Sonya and Exhibition
  10. 精简压缩优化 Docker 镜像几百MB