EasyRecyclerView,简单易上手,支持多种常用的功能的RecyclerView
来源:互联网 发布:淘宝买家信用贷款 编辑:程序博客网 时间:2024/06/03 18:57
引包
compile 'com.jude:easyrecyclerview:4.4.2'
使用方法
xml中使用
<com.jude.easyrecyclerview.EasyRecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_empty="@layout/view_empty" app:layout_progress="@layout/view_progress" app:layout_error="@layout/view_error" app:recyclerClipToPadding="true" app:recyclerPadding="8dp" app:recyclerPaddingTop="8dp" app:recyclerPaddingBottom="8dp" app:recyclerPaddingLeft="8dp" app:recyclerPaddingRight="8dp" app:scrollbarStyle="insideOverlay"//insideOverlay or insideInset or outsideOverlay or outsideInset app:scrollbars="none"//none or vertical or horizontal />
代码中设置
void setEmptyView(View emptyView)void setProgressView(View progressView)void setErrorView(View errorView)
展示视图
void showEmpty()void showProgress() void showError() void showRecycler()
Demo:上拉下拉刷新,加载时进度提示,错误提示
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.junx.easyrecyclerview.MainActivity"> <com.jude.easyrecyclerview.EasyRecyclerView android:id="@+id/rv" android:layout_width="368dp" android:layout_height="495dp" app:scrollbarStyle="insideOverlay" app:layout_error="@layout/view_error" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:layout_marginRight="8dp" app:layout_constraintRight_toRightOf="parent" android:layout_marginLeft="8dp" android:layout_marginBottom="8dp" android:layout_marginTop="8dp"/></android.support.constraint.ConstraintLayout>
//传入数据的model为泛型public class DemoViewHolder extends BaseViewHolder<Person> { private TextView mTv_name; private ImageView mImg_face; private TextView mTv_sign; public DemoViewHolder(ViewGroup parent) { super(parent,R.layout.item_person); mTv_name = $(R.id.person_name); mTv_sign = $(R.id.person_sign); mImg_face = $(R.id.person_face); } @Override public void setData(Person person) { mTv_name.setText(person.getName()); mTv_sign.setText(person.getSign()); Picasso.with(getContext()) .load(person.getFace()) .into(mImg_face); }}
public class MainActivity extends AppCompatActivity{ EasyRecyclerView rv; private RecyclerArrayAdapter<Person> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rv= (EasyRecyclerView) findViewById(R.id.rv); rv.setLayoutManager(new LinearLayoutManager(this)); //设置分割线 DividerDecoration decoration = new DividerDecoration(Color.RED, 2, 20, 20); decoration.setDrawLastItem(false); rv.addItemDecoration(decoration); rv.setAdapterWithProgress(adapter=new RecyclerArrayAdapter<Person>(this) { @Override public BaseViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) { //adapter与viewholder解耦,通过viewholder return new DemoViewHolder(parent); } }); //下拉刷新 rv.setRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { new Timer().schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { adapter.addAll(DataProvider.getPersonList(1)); } }); } },2000); } }); //上拉加载更多 adapter.setMore(R.layout.view_more, new RecyclerArrayAdapter.OnLoadMoreListener() { @Override public void onLoadMore() { new Timer().schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { //当加载数据的size=0时,展示数据到底的视图,并且不能在上拉刷新 adapter.addAll(new ArrayList<Person>()); } }); } },2000); } }); //设置数据到底时的视图 adapter.setNoMore(R.layout.view_nomore); adapter.setError(R.layout.view_error, new RecyclerArrayAdapter.OnErrorListener() { @Override public void onErrorShow() { Log.d("meee",getClass()+":\n"+"onErrorShow:");// adapter.resumeMore(); } @Override public void onErrorClick() { Log.d("meee",getClass()+":\n"+"onErrorClick:");// adapter.resumeMore(); } }); //通过该方法展示error视图 rv.showError(); new Timer().schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { adapter.pauseMore(); Log.d("meee",getClass()+":\n"+"暂停"); } }); } },2000); }}
插入 更新 移除数据
//添加item出现的动画 rv.setItemAnimator(new DefaultItemAnimator()); //插入数据 移除数据 更新数据 adapter.insert(data,position); adapter.remove(position); adapter.update(data,position);
添加头布局和脚布局
adapter.addHeader(new RecyclerArrayAdapter.ItemView() { @Override public View onCreateView(ViewGroup parent) { TextView tv = new TextView(MainActivity.this); tv.setText("你好啊"); return tv; } @Override public void onBindView(View headerView) { } }); adapter.addFooter(new RecyclerArrayAdapter.ItemView() { @Override public View onCreateView(ViewGroup parent) { TextView tv = new TextView(MainActivity.this); tv.setText("你好啊"); return tv; } @Override public void onBindView(View headerView) { } });
添加粘性头布局
public class StickyHeaderAdapter implements StickyHeaderDecoration.IStickyHeaderAdapter<StickyHeaderAdapter.HeaderHolder> { private LayoutInflater mInflater; public StickyHeaderAdapter(Context context) { mInflater = LayoutInflater.from(context); } @Override public long getHeaderId(int position) { return position / 3; } @Override public HeaderHolder onCreateHeaderViewHolder(ViewGroup parent) { final View view = mInflater.inflate(R.layout.header_item, parent, false); return new HeaderHolder(view); } @Override public void onBindHeaderViewHolder(HeaderHolder viewholder, int position) { viewholder.header.setText("第"+getHeaderId(position)+"组"); } class HeaderHolder extends RecyclerView.ViewHolder { public TextView header; public HeaderHolder(View itemView) { super(itemView); header = (TextView) itemView; } }}
//R.layout.header_item<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="40dp" android:background="#e6e6e6" android:paddingLeft="16dp" android:gravity="center_vertical" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#000"></TextView>
StickyHeaderDecoration stickyHeaderDecoration = new StickyHeaderDecoration(new StickyHeaderAdapter(this)); stickyHeaderDecoration.setIncludeHeader(false); rv.addItemDecoration(stickyHeaderDecoration);
阅读全文
0 0
- EasyRecyclerView,简单易上手,支持多种常用的功能的RecyclerView
- EasyRecyclerView 添加header,footer, 上拉加载更多的recyclerview
- EasyRecyclerView的使用
- EasyRecyclerView的基本使用
- Android 十分方便的EasyRecyclerView
- RecyclerView的多种布局MultiItemTypeAdapter
- Android常用控件--RecyclerView的简单使用
- 支持setOnItemClickListener的RecyclerView
- 从头开始学 RecyclerView(四) 类ListView添加header和footer、多种ViewHolder的支持
- 28.Android 十分方便的EasyRecyclerView
- 简单封装PagerAdapter以支持多种类型的视图
- 运行一个实例(进程)功能的多种常用实现
- RecyclerView的长按多选功能
- recyclerview的适配器功能
- RecyclerView的加载显示多种布局
- RecyclerView的加载显示多种布局
- RecyclerView的加载显示多种布局
- RecyclerView显示加载多种布局的原理
- Linux进程
- 多线程(一)
- FTP主动模式与被动模式
- 【Python】Matplotlib画图(七)——线的颜色、点的形状
- mysqldump导出时2013问题
- EasyRecyclerView,简单易上手,支持多种常用的功能的RecyclerView
- 初识SQL中in和exists关键字
- CompletableFuture
- angular4项目启动步骤
- 画条虚线
- gradle-3.3-all.zip
- 编写restful接口时通过jsonview来控制输出json中字段的显示或者忽略
- Android中WebView的定位功能、视频全屏播放、下载功能、页面Url的处理、进度条处理
- mysql sql找出一个表中多个字段重复的值