如何在Android Studio中添加v7兼容包RecyclerView-v7支持包

&nbsp&#8250&nbsp&nbsp&#8250&nbsp
RecyclerView使用介绍
这篇文章是根据官网的一篇文章()写的,不过作者增加了一些自己的理解,我十分推崇这种方式,而不是死板的翻译官网的文档,国内技术文章翻译的最差的地方在于:翻译出来的句子还保留着英语的语序。RecyclerView 是Android L版本中新添加的一个用来取代ListView的SDK,它的灵活性与可替代性比listview更好。接下来通过一系列的文章讲解如何使用RecyclerView,彻底抛弃ListView.介绍RecyclerView与ListView原理是类似的:都是仅仅维护少量的View并且可以展示大量的数据集。RecyclerView用以下两种方式简化了数据的展示和处理:使用LayoutManager来确定每一个item的排列方式。为增加和删除项目提供默认的动画效果。你也可以定义你自己的LayoutManager和添加删除动画,RecyclerView项目结构如下:Adapter:使用RecyclerView之前,你需要一个继承自RecyclerView.Adapter的适配器,作用是将数据与每一个item的界面进行绑定。LayoutManager:用来确定每一个item如何进行排列摆放,何时展示和隐藏。回收或重用一个View的时候,LayoutManager会向适配器请求新的数据来替换旧的数据,这种机制避免了创建过多的View和频繁的调用findViewById方法(与ListView原理类似)。目前SDK中提供了三种自带的LayoutManager:LinearLayoutManagerGridLayoutManagerStaggeredGridLayoutManager第一节、简单的RecyclerView使用方法本节所示示例是一个最简单的使用方法,在接下来几节中将会介绍更多RecyclerView的别的一些疟挠梅āW髡哂玫幕肪呈Android Studio 0.8.6。1、添加依赖在AS的build.gradle中添加依赖,然后同步一下就可以引入依赖包:dependencies&{
compile&'com.android.support:recyclerview-v7:21.0.+'
}2、编写代码添加完依赖之后,就开始写代码了,与ListView用法类似,也是先在xml布局文件中创建一个RecyclerView的布局:&RelativeLayout&xmlns:android=&/apk/res/android&
&&&&xmlns:tools=&/tools&
&&&&android:layout_width=&match_parent&
&&&&android:layout_height=&match_parent&
&&&&tools:context=&.MainActivity&&
&&&&&android.support.v7.widget.RecyclerView
&&&&&&&&android:id=&@+id/my_recycler_view&
&&&&&&&&android:layout_width=&match_parent&
&&&&&&&&android:layout_height=&match_parent&
&&&&&&&&android:scrollbars=&vertical&/&
&/RelativeLayout&创建完布局之后在MainActivity中获取这个RecyclerView,并声明LayoutManager与Adapter,代码如下:mRecyclerView&=&(RecyclerView)findViewById(R.id.my_recycler_view);
//创建默认的线性LayoutManager
mLayoutManager&=&new&LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
//如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
mRecyclerView.setHasFixedSize(true);
//创建并设置Adapter
mAdapter&=&newMyAdapter(getDummyDatas());
mRecyclerView.setAdapter(mAdapter);接下来的问题就是Adapter的创建:public&class&MyAdapter&extends&RecyclerView.Adapter&MyAdapter.ViewHolder&&{
&&&&public&String[]&datas&=&
&&&&public&MyAdapter(String[]&datas)&{
&&&&&&&&this.datas&=&
&&&&//创建新View,被LayoutManager所调用
&&&&@Override
&&&&public&ViewHolder&onCreateViewHolder(ViewGroup&viewGroup,&int&viewType)&{
&&&&&&&&View&view&=&LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item,viewGroup,false);
&&&&&&&&ViewHolder&vh&=&new&ViewHolder(view);
&&&&&&&&return&
&&&&//将数据与界面进行绑定的操作
&&&&@Override
&&&&public&void&onBindViewHolder(ViewHolder&viewHolder,&int&position)&{
&&&&&&&&viewHolder.mTextView.setText(datas[position]);
&&&&//获取数据的数量
&&&&@Override
&&&&public&int&getItemCount()&{
&&&&&&&&return&datas.
&&&&//自定义的ViewHolder,持有每个Item的的所有界面元素
&&&&public&static&class&ViewHolder&extends&RecyclerView.ViewHolder&{
&&&&&&&&public&TextView&mTextV
&&&&&&&&public&ViewHolder(View&view){
&&&&&&&&super(view);
&&&&&&&&&&&&mTextView&=&(TextView)&view.findViewById(R.id.text);
}3、运行写完这些代码这个例子既可以跑起来了。从例子也可以看出来,RecyclerView的用法并不比ListView复杂,反而更灵活好用,它将数据、排列方式、数据的展示方式都分割开来,因此可定制型,自定义的形式也非常多,非常灵活。横向布局如果想要一个横向的List只要设置LinearLayoutManager如下就行,注意要声明mLayoutManager的类型是LinearLayoutManager而不是父类LayoutManager:mLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);Grid布局如果想要一个Grid布局的列表,只要声明LayoutManager为GridLayoutManager即可:mLayoutManager&=&new&GridLayoutManager(context,columNum);
mRecyclerView.setLayoutManager(mLayoutManager);注意,在Grid布局中也可以设置列表的Orientation属性,来实现横向和纵向的Grid布局。瀑布流布局瀑布流就使用StaggeredGridLayoutManager吧,具体方法与上面类似,就不做介绍啦。总结本节介绍的是一个最最简单的RecyclerView的使用方法,后面将介绍一些更高级的用法。第二节、RecyclerView的高级方法当使用了一段时间的RecyclerView,发现为其每一项添加点击事件并没有ListView那么轻松,像ListView直接加个OnItemClickListener就行了。实际上我们不要把RecyclerView当做ListView的一个升级版,希望大家把他看做一个容器,同时里面包含了很多不同的Item,它们可以以不同方式排列组合,非常灵活,点击方式你可以按照你自己的意愿进行实现。本节主要讲解如何为RecyclerView添加点击事件, 并简单介绍如何进行Item增加删除。添加点击事件上一节中我们讲了如何使用RecyclerView的Adpater,其实我们会发现,Adapter是添加点击事件一个很好的地方,里面是构造布局等View的主要场所,也是数据和布局进行绑定的地方。首先我们在Adapter中创建一个实现点击接口,其中view是点击的Item,data是我们的数据,因为我们想知道我点击的区域部分的数据是什么,以便我下一步进行操作:public&static&interface&OnRecyclerViewItemClickListener&{
&&&&void&onItemClick(View&view&,&DataModel&data);
}定义完接口,添加接口和设置Adapter接口的方法:private&OnRecyclerViewItemClickListener&mOnItemClickListener&=&
&&&&public&void&setOnItemClickListener(OnRecyclerViewItemClickListener&listener)&{
&&&&this.mOnItemClickListener&=&
}那么这个接口用在什么地方呢?如下代码所示,我们为Adapter实现OnClickListener方法:public&class&MyAdapter&extends&RecyclerView.Adapter&MyAdapter.ViewHolder&&implements&View.OnClickListener{
&&&&@Override
&&&&public&ViewHolder&onCreateViewHolder(ViewGroup&viewGroup,&final&int&i)&{
&&&&&&&&View&view&=&LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item,&viewGroup,&false);
&&&&&&&&ViewHolder&vh&=&new&ViewHolder(view);
&&&&&&&&//将创建的View注册点击事件
&&&&&&&&view.setOnClickListener(this);
&&&&&&&&return&
&&&&@Override
&&&&public&void&onBindViewHolder(ViewHolder&viewHolder,&final&int&i)&{
&&&&&&&&viewHolder.mTextView.setText(datas.get(i).title);
&&&&&&&&//将数据保存在itemView的Tag中,以便点击时进行获取
&&&&&&&&viewHolder.itemView.setTag(datas.get(i));
&&&&@Override
&&&&public&void&onClick(View&v)&{
&&&&&&&&if&(mOnItemClickListener&!=&null)&{
&&&&&&&&&&&&//注意这里使用getTag方法获取数据
&&&&&&&&&&&&mOnItemClickListener.onItemClick(v,(DataModel)v.getTag());
}做完这些事情,我们就可以在Activity或其他地方为RecyclerView添加项目点击事件了,如在MainActivity中:mAdapter&=&new&MyAdapter(getDummyDatas());
mRecyclerView.setAdapter(mAdapter);
mAdapter.setOnItemClickListener(new&MyAdapter.OnRecyclerViewItemClickListener()&{
&&&&@Override
&&&&public&void&onItemClick(View&view,&DataModel&data)&{
&&&&&&&&//DO&your&fucking&bussiness&here!
});完成了以上代码就可以为RecyclerView添加项目点击事件了,下面我们来看看RecyclerView如何添加和删除数据并在界面上显示。添加删除数据以前在ListView当中,我们只要修改后数据用Adapter的notifyDatasetChange一下就可以更新界面。然而在RecyclerView中还有一些更高级的用法:添加数据:public&void&addItem(DataModel&content,&int&position)&{
&&&&datas.add(position,&content);
&&&&notifyItemInserted(position);&//Attention!
}删除数据:public&void&removeItem(DataModel&model)&{
&&&&int&position&=&datas.indexOf(model);
&&&&datas.remove(position);
&&&&notifyItemRemoved(position);//Attention!
}值得注意的是RecyclerView的添加删除都是有默认的动画效果的,如果没有效果可以添加如下代码:mRecyclerView.setItemAnimator(newDefaultItemAnimator());当然啦你也可以自己定义你自己的Animator,等我研究明白了也来讲一讲如何自定义这些效果~
上一篇: Android 从 4.4(KitKat) 开始提供了一个视觉上的提升,让最上方的状态栏 (Status Bar) 以及最下方的导航栏 (Navigation Bar) 可以被透明化,并让 APP 的内容可以往上下延伸,使整个画面的可被利用度大幅提升。 从 3.0 (honeycomb) 开始,Navigation Bar采用
下一篇: 通常情况下,下载Android SDK需要连接谷歌的服务器进行下载,由于国内水深火热的网络,速度基本为0.好在国内也有一个更新的镜像地址。本文章介绍如何在不翻墙的情况下,使用国内镜像地址,更新android sdk. 设置host 首先在etc/hosts中设置hosts,需要管理员&>&&>&&>&&>&android v7兼容包RecyclerView的使用(四)——点击事件的不同方式处理
android v7兼容包RecyclerView的使用(四)——点击事件的不同方式处理
上传大小:8.42MB
http://blog.csdn.net/sbsujjbcy/article/details/
综合评分:4.6(11位用户评分)
所需积分:0
下载次数:133
审核通过送C币
创建者:jiangsucsdn
创建者:dickyqie
创建者:qq_
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
/*删除回复*/
$(".del_comment_r").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
评论共有6条
还可以,就是感觉有点乱.
还可以,不过我没有使用
不错不错。
写到很好,谢谢
这个Demo写的很清晰,正好在学如何添加事件点击,谢谢
这个Demo写的很清晰,正好在学如何添加事件点击,谢谢
上传者其他资源上传者专辑
移动开发热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
android v7兼容包RecyclerView的使用(四)——点击事件的不同方式处理
会员到期时间:剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:}

我要回帖

更多关于 添加v7兼容包 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信