zoukankan      html  css  js  c++  java
  • RecyclerView的使用(三)

    上个小结中介绍了如何使用RecyclerView显示不同的数据展示样式(瀑布流也是可以显示的,从GridView改就好)

    本节来为RecyclerView的item添加监听事件。

    RecyclerView本身没有为item设置监听事件,想要使用onclick或者onLongclick事件需要自己定义(这是最坑爹的),然后暴露方法供调用

    实现RecyclerView 的item 的监听事件需要以下几步:

    鸿洋大神表示实现该方法有很多)我这里就使用大神在讲解中所用的方法:

      1、在Adapter方法中添加监听接口onItemClickListener和onItemLongClickListener;

      2、暴露接口的set方法;

      3、在onBindviewHolder方法中编写onItemClickListener和onItemLongClickListener的监听

      4、调用该方法

    实现效果:

    点击

    长按

    在Adapter方法中添加监听接口onItemClickListener和onItemLongClickListener

    public interface OnItemClieckLinster{

    void onItemClickListener(View view , int pos); void onItemLongClickListener(View view , int pos); }

    暴露方法

     private OnItemClieckLinster onItemClieckLinster;
        public void setOnItemClieckLinster(OnItemClieckLinster listener){
    
            this.onItemClieckLinster = listener;
        }

    实现监听 修改onBindViewHolder方法

    //绑定ViewHolder
        @Override
        public void onBindViewHolder(final MyViewHolder holder, final int position) {
            //为textview 赋值
            holder.tv.setText(mDatas.get(position));
    
            if(onItemClieckLinster != null){
    
                //onitemclicklistener
                holder.itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        onItemClieckLinster.onItemClickListener(holder.itemView , position);
                    }
                });
    
                //onitemlongclicklistener
                holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
                    @Override
                    public boolean onLongClick(View view) {
    
                        onItemClieckLinster.onItemLongClickListener(holder.itemView , position);
                        return false;
                    }
                });
            }
        }

    调用监听

            myAdapter.setOnItemClieckLinster(new MyAdapter.OnItemClieckLinster() {
                @Override
                public void onItemClickListener(View view, int pos) {
                    Toast.makeText(MainActivity.this, "click" + pos , Toast.LENGTH_SHORT).show();
                }
    
                @Override
                public void onItemLongClickListener(View view, int pos) {
                    Toast.makeText(MainActivity.this, "long click" + pos , Toast.LENGTH_SHORT).show();
                }
            });

     做完上面的操作就能实现图片上的效果啦~

    不过有没有发现item没有点击动画?这怎么行呢!下节我们九尾item添加点击动画吧!

  • 相关阅读:
    【Nginx+Tomcat】高性能负载均衡的Tomcat集群
    【JS-Excel】使用JS导出表格数据、附带解决科学计数法等问题
    【Util】日期工具类总结
    【SpringMVC】url映射传参
    【Linux+Windows】Linux,Windows打包发布到Tomcat并修改映射的ip地址
    【Spring】解决返回json乱码问题
    【API】高德地图API JS实现获取坐标和回显点标记
    ELK-Python(二)
    ELK-Python(一)
    zookeeper集群
  • 原文地址:https://www.cnblogs.com/wobeinianqing/p/5721870.html
Copyright © 2011-2022 走看看