Android开发教程 - 使用Data Binding(八)使用自定义Interface
我们平常在Android的开发中,比如如果要设置一个View的点击事件,通常通过view.setOnClickListener()来实现的,这种方式略显繁琐,而且要通过findViewById()来获取到此View的引用。使用了Data Binding技术以后,我们无需这样做,可以直接通过在xml布局文件中设置一个Interface的实现来直接调用某个方法,非常方便。
除了上面说的方便之外,当两个Fragment之间需要通信时,Android是强烈不建议两个Fragment之间直接通信的,它们之间的通信只能通过他们所在的Activity来进行中转。使用Data Binding之后,这种情况处理起来就简单了很多,通过将一个Interface的实现设置到两个Fragment的xml布局文件中就可以实现。下面我们来举例说明这种方式的用法。
使用自定义接口首先定义一个接口
public interface IMainActivity { void clickedSomething();}
实现这个接口
public class MainActivity extends AppCompatActivity implements IMainActivity{ @Override public void clickedSomething() { }}
在布局文件的<data/>标签中定义该接口的变量
<variable name="iMainActivity" type="cn.examplecode.androiddatabinding.IMainActivity"/>
通过binding设置这个变量
mBinding.setIMainActivity(this);
布局中调用接口的方法如果发现并没有这个方法,可能因为IDE并没有自动生成这个方法,可以参考[这篇文章]()进行解决。
<TextViewandroid: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(或任意对象)中的方法了,本文以简单的点击事件及简单的事件进行用法的举例,大家可以根据自己的业务应用到更多的场景中。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。