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

    xiaoxiao2026-10-01  6

    在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

    转载请注明原文地址: https://ju.6miu.com/read-1312499.html
    最新回复(0)