Android基础---四步教你理解回调

作者: SmartSean | 来源:发表于2017-03-21 16:38 被阅读296次

    前言

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

    本来是想实现可以拖动排序的,但是由于自己的技术功底还不够,就先实现了可以增加和删除的小功能。后来自己使用的是稍微修改过的 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("编辑");
        }
    }
    

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

    特此记录!

    相关文章

      网友评论

      • unfind:java的基础知识。。。跟这个标题,android的回调没有多大关系吧?
        SmartSean:嗯嗯,可能在你看起来比较基础,我是去年才get到这个知识点的,是从csdn搬过来,重新改点东西的博客。
      • EGOISTK21:这个例子简单明了,我看出了MPV的影子
        SmartSean: @EGOISTK 。。。
        EGOISTK21:@CodingSean 说错了MVP,Model View Presenter,一种app架构
        SmartSean:@EGOISTK MPV是啥?

      本文标题:Android基础---四步教你理解回调

      本文链接:https://www.haomeiwen.com/subject/jnxinttx.html