Android的RecyclerView
简介
RecyclerView是support-v7中用来替换ListView的组件。RecyclerView 小组件比 ListView 更高级且更具灵活性。 此小组件是一个用于显示庞大数据集的容器,可通过保持有限数量的视图进行非常有效的滚动操作。 如果您有数据集合,其中的元素将因用户操作或网络事件而发生改变,请使用 RecyclerView 小组件。
使用方法
- 如果要使用RecyclerView,首先要添加support-v7的支持。
- 打开Project Structure选项,在Dependencies添加RecyclerView-v7库,之后就可以在程序中使用RecyclerView:
public class MainActivity extends Activity {
private RecyclerView rv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
rv = new RecyclerView(this);
setContentView(rv);
...
- 设置RecyclerView的布局:
rv.setLayoutManager(new LinearLayoutManager(this));
RecyclerView 提供这些内置布局管理器:
- LinearLayoutManager 以垂直或水平滚动列表方式显示项目。
- GridLayoutManager 在网格中显示项目。
- StaggeredGridLayoutManager 在分散对齐网格中显示项目。
// rv.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
// rv.setLayoutManager(new GridLayoutManager(this, 2));
// rv.setLayoutManager(new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL));
- 接着要给RecyclerView添加Adapter,这个Adapter也需要自定义。在这个Adapter中需要定义一个类,继承自RecyclerView.ViewHolder:
class ViewHolder extends RecyclerView.ViewHolder {
private View root;
private TextView tvTitle, tvContent;
public ViewHolder(View root) {
super(root);
tvTitle = (TextView) root.findViewById(R.id.tvTitle);
tvContent = (TextView) root.findViewById(R.id.tvContent);
}
public TextView getTvContent() {
return tvContent;
}
public TextView getTvTitle() {
return tvTitle;
}
}
- 并作为onCreateViewHolder的返回值,这个函数表示每一项的View:
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell, null));
}
- 接下来重写onBindViewHolder, 这个函数用来RecylerView显示每一项的内容的时候调用。
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
ViewHolder vh = (ViewHolder) holder;
CellData cd = data[position];
vh.getTvTitle().setText(cd.title);
vh.getTvContent().setText(cd.content);
}
- 并提供这个数组,就可以显示了:
private CellData[] data = new CellData[]{......}
Android的RecyclerView的更多相关文章
- [Android]使用RecyclerView替代ListView(三)
以下内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4268097.html 这次来使用RecyclerView实现Pinn ...
- [Android]使用RecyclerView替代ListView(二)
以下内容为原创,转载请注明: 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4242541.html 以前写过一篇“[Android]使用Adapte ...
- [Android]使用RecyclerView替代ListView(一)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4232560.html RecyclerView是一个比List ...
- [Android]使用RecyclerView替代ListView(四:SeizeRecyclerView)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:<> [Android]使用RecyclerView替代ListView(四:SeizeRecyclerView) 在RecyclerV ...
- Android开发——RecyclerView特性以及基本使用方法(二)
0. 前言 随着Android的发展,虽然ListView依旧重要,但RecyclerView确实越来越多的被大家使用.但显然并不能说RecyclerView就一定优于ListView,而是应该根据 ...
- Android开发——RecyclerView特性以及基本使用方法(一)
)关于点击事件,没有像ListView那样现成的API,但是自己封装起来也不难,而且我们使用ListView时,如果item中有可点击组件,那么点击事件的冲突也是一个问题,而在RecyclerView ...
- android中RecyclerView控件实现点击事件
RecyclerView控件实现点击事件跟ListView控件不同,并没有提供类似setOnItemClickListener()这样的注册监听器方法,而是需要自己给子项具体的注册点击事件. 本文的例 ...
- android中RecyclerView控件实现瀑布流布局
本文是在之前文章的基础上做的修改:android中RecyclerView控件的使用 1.修改列表项news_item.xml: <?xml version="1.0" en ...
- android中RecyclerView控件的列表项横向排列
本文是在上一篇文章的基础上做的修改:android中RecyclerView控件的使用 1.修改列表项news_item.xml:我这里是把新闻标题挪到了新闻图片的下面显示 <?xml vers ...
- Android开发——RecyclerView实现下载列表
本篇记录的是使用Jsoup框架爬取网页内容,结合Android的RecyclerView,从而实现批量下载小说的功能(也是我的APP星之小说下载器Android版的核心功能),思路仅供参考 本文使用了 ...
随机推荐
- python实用小技巧自问自答系列(一):查看类中函数文档doc的方法
问题:如何查看某个类的方法文档说明或者是函数的参数列表情况? 答: 方法一:直接在需要查询的方法后面加上".__doc__"即可以打印出该方法的文档说明(需要先导入该方法所属模块) ...
- chrome的常用快捷键和命令
常见快捷键 F12 打开Chrome控制台 Ctrl+J 进入"下载内容"页面 Ctrl+H 查看"历史记录"页面 Ctrl+D 将此页加入书签 Ctrl+F ...
- Linux进程间通信
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们在Linux信号基础中已经说明,信号可以看作一种粗糙的进程间通信(IPC, i ...
- 各种SKYPE网页代码,SKYPE在线代码
各种SKYPE网页代码,SKYPE在线代码 <a href="skype:账户?chat" target="_blank">开始 Skype 文字聊 ...
- 老王讲自制RPC框架.(一.前言与技术选型)
(#)背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只 ...
- 含有多个main方法的jar包的运行方式(适用于用java写的工具类)
如果一个jar中含有多个主程序,而你没有配置默认主程序,或者想要运行指定主程序,则可以通过如下命令执行: Java -cp example03-1.0-SNAPSHOT.jar cn.vicky.ex ...
- flask笔记3-模板
flask框架使用jinja2模板引擎.简单的说,模板就是一个纯html文件中夹杂着占位符,在渲染模板时用真实变量值替换占位符,就形成了最终的前台页面. 1.模板存放位置: 默认情况下,flask在根 ...
- flask+html selected 根据后台数据设定默认值
先给代码 <script> $("#selector_political_status").val('{{ archive.political_status }}'); ...
- HTTP历程
原文http://www.ruanyifeng.com/blog/2016/08/http.html 1.HTTP/0.9 HTTP是基于TCP/IP协议的应用层协议.它不涉及数据包传输,主要规定了客 ...
- Redis学习笔记二
学习Redis添加Object时,由于Redis只能存取字符串String,对于其它数据类型形容:Int,long,double,Date等不提供支持,因而需要设计到对象的序列化和反序列化.java序 ...