您的位置:首页 > 移动开发 > Android开发

十六、自定义联系人导航(下)---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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息