这是我参与 8 月更文挑战的第 9 天,活动详情查看: 8月更文挑战
背景
RecyclerView作为Android最常用的控件之一,是否常常为“她”操碎了心, 偶然的机会接触到了BRVAH, 在实际开发中直接被圈粉, 本章只是为了介绍BRVAH常用方法, 仅供参考
集成
详情请参见上一篇文章集成部分
点击事件
在RecyclerView自带的Adapter是没有item的点击事件的, 需要我们自己去实现, 但是BRVAH是已经实现好的, 只需要我们自己写对应的逻辑就好了
- item的点击事件
adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
Log.d(TAG, "onItemClick: ");
Toast.makeText(ItemClickActivity.this, "onItemClick" + position, Toast.LENGTH_SHORT).show();
}
});
- item的长按时间
adapter.setOnItemLongClickListener(new BaseQuickAdapter.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(BaseQuickAdapter adapter, View view, int position) {
Log.d(TAG, "onItemLongClick: ");
Toast.makeText(ItemClickActivity.this, "onItemLongClick" + position, Toast.LENGTH_SHORT).show();
return false;
}
});
- item的子视图点击事件
需要先在
Adapter的convert方法中添加子视图的监听
.addOnClickListener(R.id.tweetAvatar)
.addOnClickListener(R.id.tweetName)
然后在代码中注册Adapter的setOnItemChildClickListener的点击事件
adapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public boolean onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
Log.d(TAG, "onItemChildClick: ");
Toast.makeText(ItemClickActivity.this, "onItemChildClick" + position, Toast.LENGTH_SHORT).show();
return false;
}
});
- item的子视图长按事件
需要先在
Adapter的convert方法中添加子视图的监听
.addOnLongClickListener(R.id.tweetAvatar)
.addOnLongClickListener(R.id.tweetName)
然后在代码中注册Adapter的setOnItemChildClickListener的点击事件
adapter.setOnItemChildLongClickListener(new BaseQuickAdapter.OnItemChildLongClickListener() {
@Override
public void onItemChildLongClick(BaseQuickAdapter adapter, View view, int position) {
Log.d(TAG, "onItemChildLongClick: ");
Toast.makeText(ItemClickActivity.this, "onItemChildLongClick" + position, Toast.LENGTH_SHORT).show();
}
});
空视图
在列表中经常会有数据为空, 显示一个空视图的的需求, 使用BRVAH来设置就最简单不过了, 只需一句话和一个layout的文件
mQuickAdapter.setEmptyView(getView());
效果如下
添加Header和Footer
在列表中上拉加载和下拉刷新, 基本是每个列表必备功能, 可以通过Header和Footer进行实现, 这仅为一种方案, 有更好的可以略过
- 添加Header和Footer
mQuickAdapter.addHeaderView(getView());
mQuickAdapter.addFooterView(getView());
- 删除指定Header和Footer
mQuickAdapter.removeHeaderView(getView);
mQuickAdapter.removeFooterView(getView);
- 删除全部Header和Footer
mQuickAdapter.removeAllHeaderView();
mQuickAdapter.removeAllFooterView();
效果如下