Android中的回调

Posted 劲火星空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
                
            );
这里还传递了参数




以上是关于Android中的回调的主要内容,如果未能解决你的问题,请参考以下文章

android单例中的监听如何回调

谈谈-Android中的接口回调技术

Android中的回调

Android中的回调

Unity 中的回调侦听器 - 如何从 Android 中的 UnityPlayerActivity 调用脚本文件方法

Java/Android中的函数调用&回调函数&自定义回调函数