更清晰地理解Android中的回调

本文由12345个点组成,记录自己对回调地理解。欢迎各位拍砖。

1.回调是什么?
回:接受回来的数据
调:调用接口中的方法
2.回调的作用?
让两个不相干的事物进行通信,传递数据
3.我们为什么要了解回调?
比如项目中,更新app的包,可以使用service后台下载,然后通知acitivty更新进度。还有比如说我们查看按钮点击事件的源码,如果我们了解回调的原理,回调的使用方法,那我们能快速地理清知识脉络。
4.不同角度看待回调:
(1) 站在“回”的角度,我先在“调”中注册接口,实现接口里的方法,然后告诉“调”,你只要调用接口中的方法,我就知道你调用了。
(2) 站在“调”的角度,我提供了注册接口的方法,并在某地调用了接口里的方法,然后告诉“回”,只要你在我这注册接口并实现接口中的方法,你就知道我给你返回了什么。
通过以上两点,我们会更清晰地了解回调。

                                                                            这张图,简单说明了三者的逻辑关系。

5.通过上图举例:

需求:recyclerview没有提供像listview那样的点击事件,需要我们自己去实现。

步骤:我们只讲思路,写的是伪代码

(1)定义接口,接口中定义onItemClick() 

public interface OnRecyclerViewItemClickListener {
    void onItemClick(View view, int position);
}

 (2)调用者:RecyclerViewAdapter,提供注册接口,调用接口中的方法

public RecyclerViewAdapter extend Adapter{

private OnRecyclerViewItemClickListener onItemClickListener;

// 提供注册接口
public void setOnItemClickListener(OnRecyclerViewItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

 public void onBindViewHolder(ViewHolder viewHolder, int position) {
                if(this.onItemClickListener != null) {
                    viewHolder.itemView.setOnClickListener(new OnClickListener() {
                        public void onClick(View view) {
                            // 调用接口中的方法
                            onItemClickListener.onItemClick(view, pos);
                        }
                 }
}

(3)监听者:TestActivity,注册接口到RecyclerViewAdapter中,实现接口中的方法

public TestActivity extend BaseActivity{
@Override
    protected void onCreate(Bundle savedInstanceState) {
        // 注册接口到RecyclerViewAdapter中,重写接口中的方法
        RecyclerViewAdapter adopter = new RecyclerViewAdapter();
        adapter.setOnItemClickListener(new OnRecyclerViewItemClickListener() {
            @Override
            // 重写接口中的方法
            public void onItemClick(View view, int position) {
                // 拿到数据,自己做操作
            }
        });
    }
}

(4)触发:当我们点击item时,就会走到调用者RecyclerViewAdapter里的onClick方法,方法里调用了接口定义的onItemClick()方法,然后监听者TestActivity里的onItemClick()就会被调用。这样整个回调过程就完成了。这个过程也就是模仿着Android中的点击事件来做的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值