(二)RecyclerView的item的事件


recyclerview现在是很广泛的,基本上取代了listview了。但是挺不解的是,这个好的一个框架没有给提供item的点击和长点击。不过这点问题是难不倒我们的,自己定义一个不就得了。


定义接口:

public interface RecylerListener{
    void onItemClick(View view,int position);
    void onItemLongClick(View view,int position);
}
在onBindViewHolder中给item设置相应的事件,并回掉我们的监听。

if(recylerListener != null){
    holder.ll.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int pos = holder.getLayoutPosition();
            recylerListener.onItemClick(holder.ll,pos);
        }
    });

    holder.ll.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {
            int pos = holder.getLayoutPosition();
            recylerListener.onItemLongClick(holder.ll,pos);
            return true;//这里一定要记得返回true,不然事件没有被消耗掉,还会再次执行单击事件
        }
    });
}


仅此而已,这个item的事件就自定义出来了。如果我们需要,就在对应的activity或者fragment中去实现这个接口就行了

myadapter = new MyAdapter(AddOrRemoveActivity.this,list);
myadapter.setRecylerListener(AddOrRemoveActivity.this);

并在实现的两个方法中完成自己的逻辑就行


这里我在这两个方法中进行了additem和removeitem,为了向大家展示,recyclerview的另外一个优点:

添加和移除item时候的动画效果:
这是系统为我们提供的一个默认的实现类,我们也可以通过下面的代码进行自定义。

rv_recycler.setItemAnimator(new DefaultItemAnimator());
注意:如果想要有动画效果,我们就不能使用

myadapter.notifyDataSetChanged();
而是使用:
notifyItemInserted(position);
notifyItemRemoved(position);
到这里,recyclerview的基本使用已经没有任何问题了。但是我知道这么强大的一个库,他的好处不仅仅如此,继续探究。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值