Data Binding-include标签使用

在上一篇《不要再使用findViewById》中你看到如何通过AS 1.5以上的版本避免使用findViewById的。这本质上其实是这个View Holder父类如下的描述:

Making ListView Scrolling Smooth

我演示了如何使用AS生成一个作用于单一的布局文件的View Holder类,但是如果这个布局文件是中包含有其他的布局中的呢?又或是这个布局文件是合并于其他布局之中呢?

最终证明这些都是可以支持的,但是不同的布局文件生成不同的类。下面是一个例子:

hello_world.xml


    

        
        
    


included_layout.xml



    

你可以通过下面的方法访问这两个不同的TextView:

HelloWorldBinding binding =
    HelloWorldBinding.inflate(getLayoutInflater());
binding.hello.setText(“Hello”);
binding.included.world.setText(“World”);

对于included的模式同样运用在其他Views中:对于标签的ID被用作其类的字段名。所包含的布局,它产生了自己的类以及自己在其布局中的Views字段。所有的IDs都可以被开发者简单的在不同的两个布局中调用。例如,若你引用同样的布局两次:


    

        
        
        
    

这两个「world」TextView,可以被简单的调用:

HelloWorldBinding binding =
    HelloWorldBinding.inflate(getLayoutInflater());
binding.hello.setText(“Hello”);
binding.world1.world.setText(“First World”);
binding.world2.world.setText(“Second World”);

记住需要给你include的标签一个ID,并且不能是公共的字段。而且,记住通过使用外层的布局去生成你所需要的字段。这将会出发预处理步骤,允许其与规定字段的Views相关联并产生一个类。

如果你深入的去看生成的类,你将会看到,他们其实在引用的任何时间都是使用的相同的一个。例如,如果你有一个goodbye_world.xml类,其中包含一个included_layout.xml,只会有一个类产生。

原始文章地址

你可能感兴趣的:(Data Binding-include标签使用)