温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android开发教程 - 使用Data Binding(八)使用自定义Interface

发布时间:2020-06-17 22:23:29 来源:网络 阅读:314 作者:罗伊德666 栏目:移动开发

本系列目录

  • 使用Data Binding(一)介绍
  • 使用Data Binding(二)集成与配置
  • 使用Data Binding(三)在Activity中的使用
  • 使用Data Binding(四)在Fragment中的使用
  • 使用Data Binding(五)数据绑定
  • 使用Data Binding(六)RecyclerView Adapter中的使用
  • 使用Data Binding(七)使用BindingAdapter简化图片加载
  • 使用Data Binding(八)使用自定义Interface
  • 使用Data Binding Android Studio不能正常生成相关类/方法的解决办法

为什么要使用自定义Interface

  • 我们平常在Android的开发中,比如如果要设置一个View的点击事件,通常通过view.setOnClickListener()来实现的,这种方式略显繁琐,而且要通过findViewById()来获取到此View的引用。使用了Data Binding技术以后,我们无需这样做,可以直接通过在xml布局文件中设置一个Interface的实现来直接调用某个方法,非常方便。

  • 除了上面说的方便之外,当两个Fragment之间需要通信时,Android是强烈不建议两个Fragment之间直接通信的,它们之间的通信只能通过他们所在的Activity来进行中转。使用Data Binding之后,这种情况处理起来就简单了很多,通过将一个Interface的实现设置到两个Fragment的xml布局文件中就可以实现。

下面我们来举例说明这种方式的用法。

使用自定义接口

  1. 首先定义一个接口

    public interface IMainActivity {
        void clickedSomething();
    }
  2. 实现这个接口

    public class MainActivity extends AppCompatActivity implements IMainActivity{
        @Override
        public void clickedSomething() {
    
        }
    }
  3. 在布局文件的<data/>标签中定义该接口的变量

    <variable
        name="iMainActivity"
        type="cn.examplecode.androiddatabinding.IMainActivity"/>
  4. 通过binding设置这个变量

    mBinding.setIMainActivity(this);

    如果发现并没有这个方法,可能因为IDE并没有自动生成这个方法,可以参考[这篇文章]()进行解决。

  5. 布局中调用接口的方法
    <TextView
    android:id="@+id/tv_example"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="@{()->iMainActivity.clickedSomething()}"
    android:textSize="16sp" />

    注意:android:onClick()中的写法是一种lambda式的写法

总结

通过简单的几步就可以在布局中直接调用Activity(或任意对象)中的方法了,本文以简单的点击事件及简单的事件进行用法的举例,大家可以根据自己的业务应用到更多的场景中。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI