四步教你理解回调

前言

项目中要用到类似支付宝首页九宫格的显示,主要分为两个部分:第一部分是我的应用;第二部分是全部应用。要实现可以从我的应用中删除已添加的常用应用,也可以从全部应用添加到我的应用中。

本来是想实现可以拖动排序的,但是由于自己的技术功底还不够,就先实现了可以增加和删除的小功能。后来自己使用的是稍微修改过的 GridView 来实现的。

但是在实现的过程中,发现我需要在 GridView 的 item 里面来控制在 Activity 中的和 GridView 同级别的的控件,就在网上搜索,不知道是自己的搜索方法不对,还是本身的内容就比较少,搜索了大半天都没搜索到,于是问了公司的同事,同事说用一个接口来回调就可以了。

需求

在 GridView 的 Adapter 里面长按 item 改变 在 Activity 中的控件。

效果演示:

如果我长按 GridView 中的 item ,就要改变上方的“编辑”按钮变成“完成”。效果如下:
效果图

四步实现

1.首先定义一个接口:

public interface UpdateDataInterface {
    void setText(String text);
}

2.在“编辑”控件所在的Activity或者Frafment中实现该接口如下:

    /**
     * 实现在adapter内部更改主页按钮
     * workManageTv就是显示"编辑"和"完成"的TextView
     */
    class UpdateTextImp implements UpdateDataInterface {

        @Override
        public void setText(String text) {
            workManageTv.setText(text);
        }
    }

3.然后在实例化适配器对象的时候把这个接口传递进去:

// WorkMyAppAdapter就是适配器
workMyAppAdapter = new WorkMyAppAdapter(context, new UpdateTextImp(), false);

4.在适配器里面定义该接口,在构造方法中接收该接口,并直接拿来用,调用接口中的方法即可

// 定义用于回调的类
private UpdateDataInterface updateDataInterface;

// 构造方法,接收 UpdateDataInterface 
public WorkMyAppAdapter(UpdateDataInterface updateDataInterface){
    this.updateDataInterface = updateDataInterface;
}

// 调用
public void changeStatus(){
    if (isEdit) {
        updateDataInterface.setText("完成");
    } else {
        updateDataInterface.setText("编辑");
    }
}

以前自己总是不太清楚回调的实现,但是模模糊糊的会用上一点,今天到自己真正需要的时候,自己一步步的去实现,才真正懂了回调的用法。

特此记录!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值