循环视图——RecycleView
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相关推荐
- Android Studio App开发之循环试图RecyclerView,布局管理器LayoutManager、动态更新循环视图讲解及实战(附源码)
运行有问题或需要全部源码请点赞关注收藏后评论区留言~~~ 一.循环视图RecyclerView 尽管ListView和GridView分别实现了多行单列和多行多列的列表,使用也很简单,可是它们缺少变化 ...
- thinkphp6 循环 视图_ThinkPHP模板里怎么使用 for循环
展开全部 ThinkPHP模板里使用 for循环 ①使62616964757a686964616fe59b9ee7ad9431333337613861用For标签 用法: 开始值.结束值.步进值和循环 ...
- thinkphp6 循环 视图_ThinkPHP模板循环输出Volist标签用法实例详解
本文实例讲述了ThinkPHP模板循环输出Volist标签用法.分享给大家供大家参考,具体如下: volist 标签用于在模板中循环输出数据集或者多维数组. volist 标签 在模块操作中,sele ...
- android 将布局多次添加,android – 如何在布局xml中添加循环视图
您无法将aar文件添加到Eclipse中的libs文件夹(它不是jar文件) 目前,使用新的RecyclerView的最佳方式是切换到Android Studio并将此依赖项添加到build.grad ...
- android在xml中加载大图,android – 如何在布局xml中添加循环视图
您无法将aar文件添加到Eclipse中的libs文件夹(它不是jar文件) 目前,使用新的RecyclerView的最佳方式是切换到Android Studio并将此依赖项添加到build.grad ...
- AndroidApp学习笔记
Android 发展历程 Android 是一个基于Linux 内核的自由及开发源代码的操作系统 2005 年 8 月由Google收购注资 2007年11月发布Android的源代码 2008 年1 ...
- 多视图点云配准算法综述
作者:杨佳琪,张世坤,范世超等 转载自:华中科技大学学报(自然科学版) 编辑:东岸因为@一点人工一点智能 原文:多视图点云配准算法综述 摘要:以多视图点云配准为研究对象,对近二十余年的多视图点 ...
- RecyclerView加载sdcard/Music下的音乐列表
最近我在学习在学习RecyclerView,跟着老司机玩转App,<Android App 开发入门与项目实战>很友好,比较适合新手入门,通过基础知识和案例相结合,慢慢掌握其中要点. 书中 ...
- ASP.NET MVC Framework体验(2):显示列表数据
概述 ASP.NET WebForm下,显示列表数据,经常会使用服务器控件GridView.DataList等.在ASP.NET MVC Framework中,我们有两种方式进行显示数据,一是使用行内 ...
最新文章
- 华为,牵手这所新大学!
- 音乐处理---H_music.php
- 外汇呼叫中心如何在严格监管中存续
- ubuntu 安装phpstorm
- 137 Single Number II 数组中除了一个数外,其他的数都出现了三次,找出这个只出现一次的数...
- Deep Exploit:结合机器学习的全自动渗透测试工具
- wxWidgets:wxSimpleHtmlListBox类用法
- SAP UI5 应用开发教程之五十六 - SAP UI5 树控件(tree)的开发试读版
- SAP Kyma和Marketing Cloud的连接 - Marketing Cloud里的配置
- 为《31天成为IT服务达人》征求正式名字
- cad钣金展开插件_简单的钣金CAD展开方法
- python输出文字和数字加法_用c语言或者python将文件中特定字符串后面的数字相加...
- JS 上传图片本地缓存预览
- Linux usb3.0 xhci,解决Usb3.0/3.1(XHCI)和磁盘控制器(SRS)驱动 总裁USM、CeoMSX神兵利器
- linux开机启动项怎么设置bios,bios怎么设置开机启动项
- 响应式布局的基本介绍及原理
- ARC 128D - Neq Neq(dp+组合数学+思维)
- extjs 数字校园-云资源平台 2014.2.4-班级座位表
- 理解计算:从根号2到AlphaGo 第3季 神经网络的数学模型
- AI制作粒子消散文字效果
热门文章
- 华为OD机试 - 自动曝光(C 语言解题)【独家】
- 手机APP开发之MIT Appinventor详细实战教程(十三),云服务器的数据遇到的问题和解决的方法,以及网页客户端的详细使用方法,WIFI通信,数据获取在one net平台的相关应用
- Nvidia AGX Xavier GMSL 自动驾驶控制器设计方案
- pycharm设置项目编码
- 配置linux网络的坑之IPADDR 等出现Command not found
- 【四二学堂】jquery方式ajax获取数据并渲染页面
- 水晶报表打印纸张设置
- Tomcat8安装后tomcat8w.exe点击出现“指定的服务未安装”解决方案
- CF B. Sonya and Exhibition
- 精简压缩优化 Docker 镜像几百MB