android 控件 recyclerview
来源:互联网 发布:wps输入数据自动计算 编辑:程序博客网 时间:2024/05/01 04:29
概括
你想要控制其显示的方式,请通过布局管理器LayoutManager
你想要控制Item间的间隔(可绘制),请通过ItemDecoration你想要控制Item增删的动画,请通过ItemAnimator
你想要控制点击、长按事件,请自己写(擦,这点尼玛。)
mRecyclerView = findView(R.id.id_recyclerview);
mRecyclerView.setLayoutManager(layout);//设置布局管理器
mRecyclerView.setAdapter(adapter);//设置adapter
mRecyclerView.setItemAnimator(new DefaultItemAnimator());//设置Item增加、移除动画
mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.HORIZONTAL_LIST));//添加分割线
适配器
private class HomeAdapter extends RecyclerView.Adapter {private Context mContext;
private List<String> mDatas;
private LayoutInflater mInflater;
//把数据传递过来
public HomeAdapter(List<String> mDatas) {
this.mDatas = mDatas;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
mContext = parent.getContext();
mInflater = LayoutInflater.from(mContext);
//布局,添加itemview
View view = mInflater.inflate(R.layout.item_recycler, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
//item布局绑定数据
MyViewHolder myViewHolder = (MyViewHolder) holder;
myViewHolder.mTextView.setText(mDatas.get(position));
}
@Override
public int getItemCount() {
//大小
return mDatas.size();
}
//recyclerview的控件管理
private class MyViewHolder extends RecyclerView.ViewHolder {
TextView mTextView;
public MyViewHolder(View itemView) {
super(itemView);
mTextView = (TextView) itemView.findViewById(R.id.id_num);
}
}
}
分割线
public class ItemDivider extends RecyclerView.ItemDecoration {private Drawable mDrawable;
private final int[] ATTRS = new int[]{
android.R.attr.listDivider//系统定义的list的分割线属性
};
public ItemDivider(Context context) {
final TypedArray a = context.obtainStyledAttributes(ATTRS);
mDrawable = a.getDrawable(0);//得到分割线的drawable
a.recycle();
}
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);
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
final int top = child.getBottom() + params.bottomMargin;
final int bottom = top + mDrawable.getIntrinsicHeight();
mDrawable.setBounds(left, top, right, bottom);
mDrawable.draw(c);
}
}
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
drawVertical(c, parent);
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.set(0, 0, 0, mDrawable.getIntrinsicHeight());
}
}
自定义分割线
<!-- Application theme. --><style name="AppTheme" parent="AppBaseTheme">
<item name="android:listDivider">@drawable/divider_bg</item> //在你指定的统一样式中,把系统的listdivider指向自己的divider_bg
</style>
然后自己写个drawable即可,下面我们换一种分隔符:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient
android:centerColor="#ff00ff00"
android:endColor="#ff0000ff"
android:startColor="#ffff0000"
android:type="linear" />
<size android:height="4dp"/>
</shape>
LayoutManager
LinearLayoutManager 现行管理器,支持横向、纵向。GridLayoutManager 网格布局管理器
StaggeredGridLayoutManager 瀑布就式布局管理器
ItemAnimator
// 设置item动画mRecyclerView.setItemAnimator(new DefaultItemAnimator());
注意,这里更新数据集不是用adapter.notifyDataSetChanged()而是
notifyItemInserted(position)与notifyItemRemoved(position)
否则没有动画效果。
上述为adapter中添加了两个方法:
public void addData(int position) {
mDatas.add(position, "Insert One");
notifyItemInserted(position);
}
public void removeData(int position) {
mDatas.remove(position);
notifyItemRemoved(position);
}
0 0
- Android 新控件RecyclerView
- android 控件 recyclerview
- Android控件—RecyclerView
- Android控件--RecyclerView
- Android L 新增控件:RecyclerView
- Android新控件RecyclerView剖析
- Android(滑动控件RecyclerView)
- android常用控件RecyclerView(三) RecyclerView的使用
- [Android]关于RecyclerView控件的使用
- Android控件RecyclerView和ListView的异同
- Android 高级编程 RecyclerView 控件的使用
- Android控件RecyclerView和ListView的异同
- android 控件 翻页 ViewPager TabLayout RecyclerView
- Android控件之RecyclerView的基本使用
- Android控件RecyclerView和ListView的异同
- Android 控件 RecyclerView 的基本使用
- Android常用控件--RecyclerView的简单使用
- Android控件RecyclerView和ListView的异同
- 利用tableau数据可视化工具创建圆环图——初入门篇
- 怎么去理解Spring Aop
- 用git与github建立连接
- 百度地图--路线(步行)
- C语言----链表
- android 控件 recyclerview
- (iOS开发)计算时间差
- mybatis学习(3)---加载配置文件
- Android中解决复写ListView时出现OnScollListener无法监听,这时如果实现标题栏渐变色的话,应该将计算滚动距离的方法,写在不断调用的回调中。
- 洛谷 P1372 又是毕业季I
- android View长按事件简单写法
- 近期开发中用到的一些东西(关于自适应大小,字符串处理,心跳,本地推送,json处理等)
- 代码中特殊的注释技术——TODO、FIXME和XXX的用处
- swiper在IE8下失效