十六、自定义联系人导航(下)---RecyclerView增加头部和事件监听
2016-08-16 21:01
387 查看
在listview中我们可以很方便的增加头部view,但是RecyclerView并没有给我们提供相应的方法,而且比较坑的一点,RecyclerView没有提供ItemClickListener方法,需要我们自己去实现,既然RecyclerView提供了灵活性,那么有些事情就需要我们自己去实现了。
一、增加头部view
其实我这里实现方法是直接把头部放在RecyclerView的item,因为我这里的头部布局和一般item的布局是一样的,但是一些功能不一样;如果布局不一样的话,通过viewType去区分。
先定义头部item数量:
private int headerCount = 2; // 头部个数实现getItemViewType方法,这个方法帮助我们区分是否头部:
@Override
public int getItemViewType(int position) {
if (position < headerCount)
return HEADER_TYPE;
else
return NORMAL_TYPE;
}在onCreateViewHolder是实现各自的布局,通过viewType来区分是否头部,但是我这里的头部布局和一般item的布局是一样的,所以不需要区分布局:
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ContactViewHolder(LayoutInflater.from(context).inflate(R.layout.contact_rv_item, parent, false));
}数据绑定:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
final int finalPosition = position;
ContactViewHolder holder = ((ContactViewHolder)viewHolder);
if (getItemViewType(position) == HEADER_TYPE) {
// 头部
.........
} else {
// 非头部
.........
}
}二、增加单击回调
增加一个回调接口:
public interface ContactRecyclerItemListener {
void onClick(int position);
}监听item的单击事件并回调:
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mItemListener != null) {
// 单击回调
mItemListener.onClick(finalPosition);
}
}
});在activity中增加回调监听:
mContactAdapter.setContactRecyclerItemListener(new ContactAdapter.ContactRecyclerItemListener() {
@Override
public void onClick(int position) {
.........
}
});示意图如下(新的朋友和公司是头部):
参考:
http://www.jb51.net/article/80672.htm
一、增加头部view
其实我这里实现方法是直接把头部放在RecyclerView的item,因为我这里的头部布局和一般item的布局是一样的,但是一些功能不一样;如果布局不一样的话,通过viewType去区分。
先定义头部item数量:
private int headerCount = 2; // 头部个数实现getItemViewType方法,这个方法帮助我们区分是否头部:
@Override
public int getItemViewType(int position) {
if (position < headerCount)
return HEADER_TYPE;
else
return NORMAL_TYPE;
}在onCreateViewHolder是实现各自的布局,通过viewType来区分是否头部,但是我这里的头部布局和一般item的布局是一样的,所以不需要区分布局:
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ContactViewHolder(LayoutInflater.from(context).inflate(R.layout.contact_rv_item, parent, false));
}数据绑定:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
final int finalPosition = position;
ContactViewHolder holder = ((ContactViewHolder)viewHolder);
if (getItemViewType(position) == HEADER_TYPE) {
// 头部
.........
} else {
// 非头部
.........
}
}二、增加单击回调
增加一个回调接口:
public interface ContactRecyclerItemListener {
void onClick(int position);
}监听item的单击事件并回调:
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mItemListener != null) {
// 单击回调
mItemListener.onClick(finalPosition);
}
}
});在activity中增加回调监听:
mContactAdapter.setContactRecyclerItemListener(new ContactAdapter.ContactRecyclerItemListener() {
@Override
public void onClick(int position) {
.........
}
});示意图如下(新的朋友和公司是头部):
参考:
http://www.jb51.net/article/80672.htm
相关文章推荐
- 安卓中RecyclerView的简单使用和自定义RecyclerView的接口点击监听事件
- Android实现RecyclerView自定义列表、点击事件以及下拉刷新
- 关于Android自定义View中的onTouchEvent(MotionEvent event)事件监听
- 自定义渐变色的view,实现viewpager的滑动导航监听
- Android RecyclerView自定义点击事件和长按事件
- RecyclerView 添加头部和尾部,并实现Item的点击事件
- 给自定义View添加TouchEvent事件监听
- Android使用RecyclerView实现自定义列表、点击事件以及下拉刷新
- 关于recycleview增加监听事件的问题
- 自定义高效支持点击监听的RecyclerView
- 【Android 仿微信通讯录 导航分组列表-下】自定义View为RecyclerView打造右侧索引导航栏IndexBar
- Android自定义View之用观察者模式写自定义监听事件以及常用竖直型字母索引栏的写法
- RecyclerView 添加头部和尾部,并实现Item的点击事件
- Recyclerview的自定义点击事件
- 关于实现自定义Dialog和实现Dialog里view的事件监听的两种方法
- Android-UI布局---RecyclerView学习(一)在适配器中自定义长按和点击事件
- 自定义View监听onKeyDown事件,View捕获焦点
- Android之自定义View的监听事件
- Android_自定义View-和view的监听事件
- Android 自定义View 环绕六边形控件及其TouchEvent事件的监听