什么是RecyclerView

关于RecyclerView,是一个主要用于展示和回收View的有一个控件,在官用了一句话来概括
RecyclerView 是一种通过提供有限的数据项窗口有效显示大数据集的视图。
基提供几个基本的功能,
控制其显示的方式 ———>LayoutManager—(必需)
控制Item间的间隔 ———>ItemDecoration—-(非必需)
控制Item增删的动画——->ItemAnimator——(非必需)
以上就可以完成ListView大部的功能了,但是确缺少了一个很常用的功能,就是Item的点需事件。当然,这个并不是什么问题,上文也说了,RecyclerView是一个用于控制view展示的回收的,其它的都由用户去定制。给了用户当的自由度。下面来看一些基本的使方式。
基本使用
由于RecyclerView并不是在Android的基本库中,所以如果开发者需要使用RecyclerView里,需要gradle引用对应的扩展包,
compile 'com.android.support:recyclerview-v7:25.0.1'
这后实大家需要做的和使用ListView差别也不大,只需要调置LayoutManager和Adapter就可以完成最基础的显示了。Adapter及Adapter需要的ViewHolder均继承自RecyvlerView的内部类。
RecyclerView的Adapter
public class DemoAdapter extends RecyclerView.Adapter<DemoViewHolder> {
private List<String> data;
public DemoAdapter(List<String> data) {
this.data = data;
}
@Override
public DemoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
DemoViewHolder holder = new DemoViewHolder(LayoutInflater.from(
parent.getContext()).inflate(R.layout.demo_recycler_view_item, parent,
false));
return holder;
}
@Override
public void onBindViewHolder(DemoViewHolder holder, int position) {
holder.getView().setText(data.get(position));
}
@Override
public int getItemCount() {
return data.size();
}
}
RecyclerView的ViewHolder
public class DemoViewHolder extends RecyclerView.ViewHolder {
private TextView view;
public DemoViewHolder(View itemView) {
super(itemView);
view = (TextView) itemView.findViewById(R.id.item_view);
}
public TextView getView() {
return view;
}
}
项目主Activity
public class RecyclerViewDemoActivity extends AppCompatActivity {
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recycler_view_demo);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
String[] datas = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};
List<String> strings = Arrays.asList(datas);
DemoAdapter adapter = new DemoAdapter(strings);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
}
}
activity layout文件布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_recycler_view_demo" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.yjeeq.study.recyclerview.RecyclerViewDemoActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </RelativeLayout>
item layout文件布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="40dp" android:orientation="vertical"> <TextView android:id="@+id/item_view" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/holo_blue_dark" android:gravity="center" /> </LinearLayout>
以下是运行效果
设置单击事件
上面已经完成基本的展示,这里就介绍一下怎么为Recycler加上点击事件。其实思路很简单,就是在RecyclerView上的addOnItemTouchListener上做文章。这里给出具体实现。相信大家一看就懂。
* OnItemTouchListener的实现*
public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
private View childView;
private RecyclerView touchView;
public RecyclerItemClickListener(Context context, final OnItemClickListener mListener) {
mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent ev) {
if (childView != null && mListener != null) {
mListener.onItemClick(childView, touchView.getChildPosition(childView));
}
return true;
}
@Override
public void onLongPress(MotionEvent ev) {
if (childView != null && mListener != null) {
mListener.onLongClick(childView, touchView.getChildAdapterPosition(childView));
}
}
});
}
GestureDetector mGestureDetector;
public interface OnItemClickListener {
public void onItemClick(View view, int position);
public void onLongClick(View view, int posotion);
}
@Override
public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {
mGestureDetector.onTouchEvent(motionEvent);
childView = recyclerView.findChildViewUnder(motionEvent.getX(), motionEvent.getY());
touchView = recyclerView;
return false;
}
@Override
public void onTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
}
使用方式
首先在主类继承 RecyclerItemClickListener.OnItemClickListener,之后在主类中添加如下方法。
private void setOnItemClick() {
recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(this, this));
}
public void onItemClick(View view, int position) {
Log.d("XXXXXX", "onItemClick : postion " + position);
}
@Override
public void onLongClick(View view, int posotion) {
Log.d("XXXXXX", "onLongClick position : " + posotion);
}
基本使用参考 : https://www./article/88924.htm
点击是件参考 : https://www./article/104510.htm
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# RecyclerView
# Android ExpandableRecyclerView使用方法详解
# Android使用Recyclerview实现图片水平自动循环滚动效果
# Android RecyclerView使用方法详解
# Android使用RecyclerView实现今日头条频道管理功能
# Android使用RecyclerView实现列表数据选择操作
# Android RecyclerView的简单使用
# Android使用分类型RecyclerView仿各大商城首页
# android使用ItemDecoration给RecyclerView 添加水印
# Android如何使用RecyclerView打造首页轮播图
# RecyclerView的简单使用
# 是一个
# 就可以
# 几个
# 是在
# 是一种
# 一句
# 说了
# 用了
# 给了
# 很简单
# 大部
# 只需要
# 话来
# 介绍一下
# 主要用于
# 什么问题
# 都由
# 单击
# 上做
# 大家多多
相关文章:
如何通过VPS建站实现广告与增值服务盈利?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
如何用PHP快速搭建CMS系统?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
如何通过虚拟主机快速搭建个人网站?
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
实例解析angularjs的filter过滤器
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
购物网站制作公司有哪些,哪个购物网站比较好?
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
微信推文制作网站有哪些,怎么做微信推文,急?
如何用5美元大硬盘VPS安全高效搭建个人网站?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
公司网站设计制作厂家,怎么创建自己的一个网站?
制作网页的网站有哪些,电脑上怎么做网页?
定制建站方案优化指南:企业官网开发与建站费用解析
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
制作农业网站的软件,比较好的农业网站推荐一下?
javascript基本数据类型及类型检测常用方法小结
如何制作算命网站,怎么注册算命网站?
我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?
香港服务器WordPress建站指南:SEO优化与高效部署策略
用v-html解决Vue.js渲染中html标签不被解析的问题
b2c电商网站制作流程,b2c水平综合的电商平台?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
如何在建站之星网店版论坛获取技术支持?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
三星网站视频制作教程下载,三星w23网页如何全屏?
如何彻底卸载建站之星软件?
免费网站制作appp,免费制作app哪个平台好?
jQuery 常见小例汇总
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
PHP正则匹配日期和时间(时间戳转换)的实例代码
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
网站制作员失业,怎样查看自己网站的注册者?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
如何快速搭建高效可靠的建站解决方案?
建站之星3.0如何解决常见操作问题?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
如何通过IIS搭建网站并配置访问权限?
自助网站制作软件,个人如何自助建网站?
北京网站制作的公司有哪些,北京白云观官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。