十六、自定义联系人导航(下)---RecyclerView增加头部和事件监听

在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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值