- 浏览: 223380 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
啊嘞嘞勒:
游戏结束无法显示
自己制作的 java 版 2048游戏 -
VIP庚:
dufangyu1990 写道VIP庚 写 ...
Android 视频通话(一) -
dufangyu1990:
VIP庚 写道dufangyu1990 写 ...
Android 视频通话(一) -
VIP庚:
dufangyu1990 写道VIP庚 写道dufangyu1 ...
Android 视频通话(一) -
dufangyu1990:
VIP庚 写道dufangyu1990 写道VIP庚 写道du ...
Android 视频通话(一)
1 RecycleView 通过/位置 id找到所对应的ViewHolder
recyclerView.findViewHolderForAdapterPosition(i);
recyclerView.findViewHolderForItemId()
2 判断RecycleView 是否滑动到最底端
3 动态设置RecycleView的大小 适用于在同一个活动中使用2个recycleview的情况
4 设置recycleview的视图项之间的分割线
先自定义定义一个分割线类
使用
5 设置RecyclerView的滚动条
纵向显示
横向显示
隐藏
recyclerView.findViewHolderForAdapterPosition(i);
recyclerView.findViewHolderForItemId()
2 判断RecycleView 是否滑动到最底端
LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); //添加滚动监听器 recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); // 当不滚动时 if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { // 判断是否滚动到底部 //得到可见视图项最底层id int lostPos = layoutManager.findLastVisibleItemPosition(); if (lostPos == layoutManager.getItemCount() - 1) { //Toast.makeText(ShowActivity.this, "最后:" + lostPos, Toast.LENGTH_SHORT).show(); } } } });
3 动态设置RecycleView的大小 适用于在同一个活动中使用2个recycleview的情况
for(int i=0; i<adapter1.getItemCount(); i++) { View listItem=recyclerView1.findViewHolderForAdapterPosition(i).itemView; listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = recyclerView1.getLayoutParams(); params.height = totalHeight + (recyclerView1.getDividerHeight() * (listAdapter.getCount() - 1)); //recyclerView1.getDividerHeight()获取子项间分隔符占用的高度 //params.height最后得到整个recyclerView1完整显示需要的高度 recyclerView1.setLayoutParams(params);
4 设置recycleview的视图项之间的分割线
先自定义定义一个分割线类
import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; /** * This class is from the v7 samples of the Android SDK. It's not by me! * <p/> * See the license above for details. */ public class DividerItemDecoration extends RecyclerView.ItemDecoration { private static final int[] ATTRS = new int[]{ android.R.attr.listDivider }; public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL; public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL; private Drawable mDivider; private int mOrientation; public DividerItemDecoration(Context context, int orientation) { final TypedArray a = context.obtainStyledAttributes(ATTRS); mDivider = a.getDrawable(0); a.recycle(); setOrientation(orientation); } public void setOrientation(int orientation) { if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) { throw new IllegalArgumentException("invalid orientation"); } mOrientation = orientation; } @Override public void onDraw(Canvas c, RecyclerView parent) { Log.v("recyclerview - itemdecoration", "onDraw()"); if (mOrientation == VERTICAL_LIST) { drawVertical(c, parent); } else { drawHorizontal(c, parent); } } public void drawVertical(Canvas c, RecyclerView parent) { final int left = parent.getPaddingLeft(); final int right = parent.getWidth() - parent.getPaddingRight(); final int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = parent.getChildAt(i); android.support.v7.widget.RecyclerView v = new android.support.v7.widget.RecyclerView(parent.getContext()); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child .getLayoutParams(); final int top = child.getBottom() + params.bottomMargin; final int bottom = top + mDivider.getIntrinsicHeight(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } } public void drawHorizontal(Canvas c, RecyclerView parent) { final int top = parent.getPaddingTop(); final int bottom = parent.getHeight() - parent.getPaddingBottom(); final int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { final View child = parent.getChildAt(i); final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child .getLayoutParams(); final int left = child.getRight() + params.rightMargin; final int right = left + mDivider.getIntrinsicHeight(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(c); } } @Override public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) { if (mOrientation == VERTICAL_LIST) { outRect.set(0, 0, 0, mDivider.getIntrinsicHeight()); } else { outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0); } } }
使用
//添加分割线 recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL_LIST));
5 设置RecyclerView的滚动条
纵向显示
android:scrollbars="vertical"
横向显示
android:scrollbars="horizontal"
隐藏
android:scrollbars="none"
发表评论
-
2018 Flag
2019-02-23 16:24 451一年多没写博客了,2018年工作太忙了,但是也收获到 ... -
PopupWindow 模拟通知弹出
2017-10-09 10:11 1246最近遇到一个需求,下面记录下实现方法 以及遇到的一些坑 需求 ... -
在Android源码下编译jni所需要知道的事~
2017-03-21 16:40 2964以下只是自己的一些总结,欢迎讨论 通过NDK编译jni网上有 ... -
Android 通过PathMeasure和Path实现动画
2016-12-24 17:07 5891最近一直在学习android框架,也就没怎么写博客了。前几 ... -
解决 Android 写入图片后 系统图库中看不到
2016-10-30 17:47 3227将一个图片通过写入外部存储后,打开系统图库找不到该图片 ... -
Android 6.0 对权限的处理
2016-09-01 14:15 3058最近要将拍的照片写入到手机外部存储中,开始测试时一点问题都 ... -
Android Dialog设置TYPE_SYSTEM_ALERT 有些手机不能显示问题
2016-08-08 11:46 11678在对话框初始的时候,设置 mProgressDialo ... -
Java 关于在公网上无法发送UDP数据给客户端问题
2016-05-19 00:22 5676最近在弄语音通话,当在局域网测试程序的时候,tcp和udp ... -
SnackBar 中添加多个按钮
2016-05-11 13:26 3982最近无意间看到一篇文章,解决了我很久以前的困扰 简单介 ... -
根据汉字拼音排序
2016-05-05 19:38 2354最近在做操作联系人数据这一块,当读取系统表中的联系人的数据 ... -
Android 开源图表库 ------ MPAndroidChart
2016-04-16 18:27 0最近在开发心率方面,要绘制心率图,准备自己写自定义view ... -
Android 命名空间和自定义属性
2016-03-18 13:06 4284在布局文件中经常看到 xmlns:android=&q ... -
Android 自定义属性和命名空间
2016-03-18 13:03 0在布局文件中经常看到 xmlns:android=&q ... -
组件之间通信------ EventBus 学习心得
2016-03-07 22:12 4712Android 线程、组件之间通信可以通过Handler消息处 ... -
常见的几种排序方法
2016-03-07 18:47 769由于最近要应付面试,所以把几个常见的排序方法有复习了一下。 ... -
关于Fragment所需要知道的概念
2016-03-02 00:16 1531可以把Fragment想成Activity中的模块,这个模 ... -
Android沉浸式通知栏的一个开源库SystemBarTint简单使用
2016-02-20 20:54 4384什么是沉浸式设模式?沉浸模式计就是把用来导航的各种界面操作 ... -
Netty 4.0 实现心跳检测和断线重连
2016-02-17 21:42 32903一 实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心 ... -
Netty4.0 实现心跳检测和客户端断线重连
2016-02-17 21:41 1一 实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心 ... -
Netty4.0 实现心跳检测和客户端断线重连
2016-02-17 21:41 1一 实现心跳检测 原理:当服务端每隔一段时间就会向客户端发送心 ...
相关推荐
在Android开发中,RecycleView是一个非常重要的控件,它为开发者提供了强大的列表展示功能,大大提升了应用的性能和用户体验。本篇文章将深入探讨RecycleView的基础知识、使用方法以及其实现原理。 RecycleView是...
把这个复制到项目的libs目录下就可以在eclipse中使用RecycleView了
在适配器(Adapter)中,你需要为每个父项和子项创建不同的ViewHolder类,并实现对应的绑定数据方法。 2. **全选与反选功能**:可以设置一个全局变量表示全选状态,然后在主RecycleView的每个子项上添加一个...
标题“横向RecycleView-左拉更新”指的是在水平滚动的RecycleView中实现左滑动更新数据的功能。这个特性常用于新闻应用、社交媒体应用等,让用户在浏览内容时可以方便地获取最新信息。 首先,我们需要了解如何创建...
`RecycleView`是Android开发中的一个重要组件,它在应用设计中扮演着核心角色,尤其在数据展示方面。本篇文章将深入探讨`RecycleView`的原理、使用方法以及如何实现一个简单的联系人列表功能。 ### 1. `RecycleView...
然后,我们在`onCreate`或`onCreateView`方法中初始化RecyclerView,并设置适配器: ```java public class MyViewModel extends ViewModel { private List<Item> items; private RecyclerView.Adapter adapter; ...
要实现这个效果,开发者首先需要在布局文件中添加RecyclerView,并为它设置合适的LayoutManager。在这个案例中,可能使用的是LinearLayoutManager,因为它可以实现垂直或水平滚动,适合底部菜单栏的场景。此外,...
在实际项目中,RecycleView还可以结合DiffUtil来自动检测数据集的变化,只更新必要的视图,进一步提升性能。同时,通过使用自定义布局管理器、动画和装饰,开发者可以打造出极具个性化的用户界面。 总的来说,...
5. 最后,可能需要在项目的AndroidManifest.xml中添加对应的权限和依赖声明,确保RecycleView能够正常运行。 三、RecycleView的使用 1. 布局创建:在XML布局文件中,使用替换原来的,并设置相应的属性,如layout_...
在Android开发中,`RecycleView`是一种高效的数据视图组件,它替代了之前的ListView,因为RecycleView在性能和灵活性方面有显著提升。本文将深入探讨RecycleView的上拉加载(Load More)和下拉刷新(Pull to Refresh...
在Android开发中,RecycleView是一个非常重要的组件,尤其在Android 5.0版本中引入后,它成为了处理大量数据列表的首选控件。RecycleView的出现替代了原本广泛使用的ListView,因为其更高的性能和更强大的灵活性。...
在`Adapter`中,我们需要为每个条目创建一个`ViewHolder`,它持有所需的视图,并在`onBindViewHolder()`方法中绑定数据。为了支持拖拽,`ViewHolder`需要扩展`RecyclerView.ViewHolder`并实现`Draggable`接口,以便...
在适配器的构造函数中接收数据集,并在需要时调用`notifyDataSetChanged()`或`notifyItemInserted()`等方法通知RecyclerView数据已更新。 8. 设置RecyclerView 最后,在Activity或Fragment中设置RecyclerView,包括...
- 在父级Adapter中,为每个父级item的绑定方法(onBindViewHolder)中,初始化子级RecyclerView并设置其Adapter。 - 处理滚动事件,确保嵌套滚动的平滑性和一致性。可以使用`NestedScrollView`或`...
在Android开发过程中,经常会遇到需要在一个`RecyclerView`内部嵌套另一个`RecyclerView`的情况,例如展示商品分类时,每一类商品下又有多个子项。这种场景下,我们希望用户既能滑动外部的`RecyclerView`来查看不同...
- **数据源变更**:在`onMove()`方法中,我们不仅要更新RecyclerView的数据结构,还需要确保数据源(通常是ArrayList或其他集合类型)的顺序与视图对应。 - **刷新视图**:在数据源更新后,通过调用`adapter....
5. **设置数据源**:在Activity或Fragment中,创建数据列表,然后通过Adapter的`notifyDataSetChanged()`或`notifyItemInserted/Removed/Changed()`方法通知Adapter数据已更新。 6. **布局管理器**:RecycleView...
自定义 LayoutManager 需要重写关键方法,如 onLayoutChildren(),在这个方法中计算每个视图的位置。 四、AppHomeRecyclerView 示例 根据你提供的文件名 "AppHomeRecyclerView",这可能是你已经实现的 RecycleView...
- RecycleView 首先需要在布局文件中声明,并设置其布局管理器(LayoutManager),如LinearLayoutManager 或 GridLayoutManager。 - 创建自定义的ViewHolder 类,继承自 RecyclerView.ViewHolder,持有每个列表项...