Android中的回调

标准


如下是我们平常使用的回调

btn_rigister.setOnClickListener(new View.OnClickListener() {  
    @Override  
    public void onClick(View view) {  
        // TODO log in  
    }  
}); 


概念


什么是回调?

实现了抽象类/接口 的实例实现了父类的提供的抽象方法,后,将该方法交还给父类来处理

比如view具有被点击的通性,但是每个点击又会产生不一样的事件处理一样,因此android对外暴露一个接口有个onClick方法,你需

要处理啥你就写啥,view只会调用这个方法,具体怎么处理你已经自己为不同的点击事件做了处理了。



栗子



如下是一个回调的栗子,接口会得到一个实例,谁调用就重写它

    public class Employee {    
        /*  
         * 定义回调接口的成员变量  
         */    
        private Callback mCallback;    
        /*  
         * 声明回调接口  
         */    
        public interface Callback{    
            public abstract void work();    
        }    
        /*  
         * 设置回调接口对象成员变量  
         */    
        public void setCallback(Callback callback) {    
            this.mCallback = callback;    
        }    
        /*  
         * 调用回调接口对象中的方法  
         */    
        public void doWork() {    
            mCallback.work();    
        }    
    }    

使用的时候这样使用,就说实现接口的方法

public class Boss {    
    private Employee employee;    
    /*  
     * 为Employee设置回调函数, 在这里定义具体的回调方法  
     */    
    public void setCallback() {    
        employee.setCallback(new Employee.Callback() {    
            @Override    
            public void work() {    
                System.out.println("work");    
            }    
        });    
    }    
} 
这里我们调用对象的doWork方法就可以调用实现类中的System.out.println("work")了


RecycleView中回调



创建接口获得实例

    /**
     * 点击RecyclerView某条的监听
     */
    public interface OnItemClickListener{

        /**
         * 当RecyclerView某个被点击的时候回调
         * @param view 点击item的视图
         * @param data 点击得到的数据
         */
        public void onItemClick(View view,String data);
    }

    private  OnItemClickListener onItemClickListener;

    /**
     * 设置RecyclerView某个的监听
     * @param onItemClickListener
     */
    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

实现接口

        //设置点击某条的监听
        adapter.setOnItemClickListener(new MyRecyclerViewAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, String data) {
                Toast.makeText(RecyclerViewActivity.this, "data=="+data, Toast.LENGTH_SHORT).show();
            }
        });

调用的时候直接拿接口的实例调用就可以了

            iv_icon.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(context, "我是图片=="+getLayoutPosition(), Toast.LENGTH_SHORT).show();
                }
            });
这里还传递了参数




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值