RecyclerView
来源:互联网 发布:javascript全选 编辑:程序博客网 时间:2024/05/29 03:41
简介
XXX
属性
每item内容不改RecyclerView大小,此设提性能
xRecyclerView.setHasFixedSize(true);
适配器
@Overridepublic void onBindViewHolder(final ViewHolder holder, int position) {}适配列表执行,点列表项不执行
/*** 自定义ViewHolder(持每Item界面全部元素)*/public class ViewHolder extends RecyclerView.ViewHolder { public ImageView ivImageSelect; public ViewHolder(final View view) { super(view); ivImageSelect = view.findViewById(R.id.ivImageSelect); }}类实现点击接口且控件添监听,点控件执行
public class ImageShowAdapter extends RecyclerView.Adapter<ImageShowAdapter.ViewHolder> implements View.OnClickListener, View.OnLongClickListener { private OnRecyclerViewItemClickListener mOnItemClickListener; private OnRecyclerViewItemLongClickListener mOnItemLongClickListener; @Override public void onClick(View v) { if (mOnItemClickListener != null) { // Method getTag which get data. mOnItemClickListener.onItemClickDeleteOrAdd(v, (ImageBean) v.getTag()); } } @Override public boolean onLongClick(View v) { if (mOnItemLongClickListener != null) { // Method getTag which get data. mOnItemLongClickListener.onItemLongClick(v, (ImageBean) v.getTag()); } return true; } public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) { this.mOnItemClickListener = listener; } public void setOnItemLongClickListener(OnRecyclerViewItemLongClickListener listener) { this.mOnItemLongClickListener = listener; } public interface OnRecyclerViewItemClickListener { /** * 短删或加 * * @param view * @param imageBean */ void onItemClickDeleteOrAdd(View view, ImageBean imageBean); } public interface OnRecyclerViewItemLongClickListener { /** * 长点 * * @param view * @param imageBean */ void onItemLongClick(View view, ImageBean imageBean); }}短或长点列表项执行方法onItemClickDeleteOrAdd或onItemLongClick
适配器错误
日志
Caused by: java.lang.IllegalStateException: Observer com.jcodecraeer.xrecyclerview.XRecyclerView$DataObserver@3f43b8 is already registered.
分析
头调给适配器注册观察者,再调注册重复。
解决
mAdapter.setImageData(list);if (!mAdapter.hasObservers()) { recyclerView.setAdapter(mAdapter);} else { mAdapter.notifyDataSetChanged();}
监听
滑动
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); toastShort(String.valueOf(newState)); } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); toastShort(dx + "||" + dy); }});
- 滑中
onScrolled
,滑前后onScrollStateChanged
- 左上
dx、dy
正,右下dx、dy
负 - 无滑且点某Item或无滑且适配器刷新,
neState
为0 - Item量不足滑或滑至尽头,继滑
newState
为1
间距
package util;import android.graphics.Rect;import android.support.v7.widget.RecyclerView;import android.view.View;/** * Created on 2017/10/23. * * @desc recyclerView item space */public class SpaceItemDecoration extends RecyclerView.ItemDecoration { private int space; public SpaceItemDecoration(int space) { this.space = space; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { outRect.left = space; outRect.top = space; outRect.right = space; outRect.bottom = space; }}
四周间距space
,内部水平或垂直间距2*space
阅读全文
0 0
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- RecyclerView
- scp命令:linux上本地文件和服务器文件的上传下载,Permission denied
- pygame+threading编写音乐播放器
- Android学习笔记二—应用技巧
- 维尼吉亚密码
- Mycat 启动失败 java.net.MalformedURLException: Local host name unknown:
- RecyclerView
- Extjs6.2 去除form组件中的textfield里面input的边框
- 远程桌面监控系统
- lsof/netstat命令的一个重要作用: 根据进程查端口, 根据端口查进程
- Python单引号、双引号、三个双引号的区别
- 100+ 值得收藏的 Web 开发资源
- python版实现凯撒密码
- 天海投资推出海航云集市 天海投资行情稳定
- UE4蓝图节点翻译---Is Child Actor