BaseRecyclerViewAdapterHelper之BaseQuickAdapter的基础用法
2017-03-08 17:16
543 查看
一个实体类RectclerItem
一个基类BaseRecyclerViewActivity
一个item(view_list_item)的视图文件和适配器QuickAdapter
实现类QuickActivity
效果图如下:
public class RecyclerItem { private String title; private String content; public RecyclerItem(String title, String content){ this.title = title; this.content = content; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
一个基类BaseRecyclerViewActivity
public abstract class BaseRecyclerViewActivity extends BaseActivity implements SwipeRefreshLayout.OnRefreshListener { protected TextView titleNameTv; protected SwipeRefreshLayout swipeRefreshLayout; protected RecyclerView recyclerView; @Override protected int getLayoutResId() { return R.layout.activity_recyclerview; } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); titleNameTv = (TextView) findViewById(R.id.title_name_tv); swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout); recyclerView = (RecyclerView) findViewById(R.id.recycler_view); swipeRefreshLayout.setOnRefreshListener(this); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.addItemDecoration( new DividerItemDecoration(this,DividerItemDecoration.VERTICAL)); } @Override public void onRefresh() { swipeRefreshLayout.postDelayed(new Runnable() { @Override public void run() { swipeRefreshLayout.setRefreshing(false); onRefreshComplete(); } },2000); } /** * 获取数据 * * @param count 设置要获取的数据的数量 * @return */ protected List<RecyclerItem> getListData(int count) { if (count == 0) return null; List<RecyclerItem> newDatas = new ArrayList<>(); for (int i = 0; i < count; i++) { if (i%3 == 0) { newDatas.add(new RecyclerItem("悯农", "唐代诗人李绅", 0)); }else if (i%3 == 1){ newDatas.add(new RecyclerItem("锄禾日当午,", "汗滴禾下土。", 1)); }else if (i%3 == 2){ newDatas.add(new RecyclerItem("谁知盘中餐, ", "粒粒皆辛苦。", 2)); } } return newDatas; } protected abstract void onRefreshComplete(); }
一个item(view_list_item)的视图文件和适配器QuickAdapter
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/view_list_item_ll" android:orientation="horizontal" android:layout_width="match_parent" android:padding="10dp" android:layout_height="wrap_content"> <ImageView android:layout_width="40dp" android:layout_height="40dp" android:src="@drawable/gardenia" android:scaleType="centerCrop"/> <LinearLayout android:layout_width="match_parent" android:layout_height="40dp" android:orientation="vertical"> <TextView android:id="@+id/list_item_title_tv" style="@style/TextStyle_14sp_666" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1.0" android:gravity="center_vertical" android:layout_marginLeft="10dp" android:textStyle="bold" android:text="标题1" /> <TextView android:id="@+id/list_item_content_tv" style="@style/TextStyle_14sp_666" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1.0" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:gravity="center_vertical" android:layout_marginLeft="10dp" android:text="内容1" /> </LinearLayout> </LinearLayout>
public class QuickAdapter extends BaseQuickAdapter<RecyclerItem,BaseViewHolder> { public QuickAdapter() { super(R.layout.view_list_item); } @Override protected void convert(BaseViewHolder helper, RecyclerItem item) { helper.setText(R.id.list_item_title_tv,item.getTitle()) .setText(R.id.list_item_content_tv,item.getContent()); helper.getView(R.id.list_item_content_tv).setSelected(true); } }
实现类QuickActivity
public class QuickActivity extends BaseRecyclerViewActivity { private QuickAdapter quickAdapter; @Override protected int getLayoutResId() { return super.getLayoutResId(); } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); titleNameTv.setText("BaseQuickAdapter的基础使用"); ExtraView headerView = new ExtraView(this); headerView.setContent("头部,点击添加,长按删除。"); ExtraView footerView = new ExtraView(this); footerView.setContent("这是我的尾部。"); quickAdapter = new QuickAdapter(); quickAdapter.openLoadAnimation(BaseQuickAdapter.SLIDEIN_RIGHT); quickAdapter.addHeaderView(headerView); quickAdapter.addFooterView(footerView); recyclerView.setAdapter(quickAdapter); quickAdapter.setNewData(getListData(6)); initListener(); } private void initListener() { // item点击事件,功能:显示点击位置 recyclerView.addOnItemTouchListener(new OnItemClickListener() { @Override public void onSimpleItemClick(BaseQuickAdapter adapter, View view, int position) { ToastUtils.showShortToast(position + quickAdapter.getItem(position).getTitle()); } }); // 头部视图点击事件,添加数据 quickAdapter.getHeaderLayout().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { recyclerView.postDelayed(new Runnable() { @Override public void run() { quickAdapter.addData(0,getListData(2)); } },500); } }); // 头部视图长按事件,删除数据 quickAdapter.getHeaderLayout().setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { recyclerView.postDelayed(new Runnable() { @Override public void run() { for (int i = 0; i < 3; i++) { quickAdapter.remove(3); } recyclerView.scrollToPosition(0); } },500); return true; } }); // item长按事件,功能:删除长按item recyclerView.addOnItemTouchListener(new OnItemLongClickListener() { @Override public void onSimpleItemLongClick(BaseQuickAdapter adapter, final View view, final int position) { SnackbarUtils.showLongSnackbar( view, "删除了:" + quickAdapter.getItem(position).getTitle(), Color.WHITE,Color.BLACK); recyclerView.postDelayed(new Runnable() { @Override public void run() { quickAdapter.remove(position); } },500); } }); // 加载更多 quickAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() { @Override public void onLoadMoreRequested() { recyclerView.postDelayed(new Runnable() { @Override public void run() { quickAdapter.addData(getListData(3)); quickAdapter.loadMoreComplete(); } },500); } }); } @Override protected void onRefreshComplete() { quickAdapter.addData(0,getListData(1)); recyclerView.scrollToPosition(0); } }
效果图如下:
相关文章推荐
- base-adapter-helper之recyclerview版本,支持多种viewtype布局
- RecyclerView的BaseAdapter的用法与条目监听的书写
- BaseRecyclerViewAdapterHelper的使用
- BaseRecyclerViewAdapterHelper开源项目之BaseQuickAdapter源码学习.
- Android开源之BaseRecyclerViewAdapterHelper(持续更新!)
- BaseRecyclerViewAdapterHelper开源项目之BaseMultiItemQuickAdapter 实现多类型源码学习
- BaseRecyclerViewAdapterHelper
- 强大的BaseRecyclerViewAdapterHelper使用
- 关于MVP设计模式 和 BaseRecyclerViewAdapterHelperV2.4.4 Android
- BaseRecyclerViewAdapterHelper的使用方法介绍
- BaseRecyclerViewAdapterHelper开源项目之BaseQuickAdapter源码学习上拉加载的实现代码(三)
- BaseRecyclerViewAdapterHelper开源项目之BaseSectionQuickAdapter 实现Expandable And collapse效果的源码学习
- BaseRecyclerViewAdapterHelper开源项目之BaseSectionQuickAdapter 实现分组效果的源码学习
- BaseRecyclerViewAdapterHelper开源项目之BaseQuickAdapter源码学习之预加载的实现(二)
- BaseRecyclerViewAdapterHelper开源项目之BaseSectionQuickAdapter 实现分组效果的源码学习
- 升级版的Adapter--------BaseRecyclerViewAdapterHelper
- BaseRecyclerViewAdapterHelper
- 关于BaseRecyclerViewAdapterHelper
- Android第三方库——强大BaseRecyclerViewAdapterHelper
- Android开发之ButterKnife,GreenDao简单运用,以及推荐并使用一个好用的开源库BaseRecyclerViewAdapterHelper。