当我使用带有ViewStub的android数据绑定框架时,我有一些代码片段。
ItemPostBinding binding=ItemPostBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
final Post post = mDataset.get(position);
binding.stub.getViewStub().setLayoutResource(App.getPostExtensionManager().getLayout(post.getExtension()));
编译代码时,我知道binding.stub
将被ViewStubProxy替换。但是我怎么能在编译之前让Android Studio忽略这里的错误?
(错误是Android Studio无法解决ViewStub类的getViewStub()
方法)
更新1
我不知道这是否是由于我使用Android数据绑定框架的旧方法。
classpath 'com.android.databinding:dataBinder:1.0-rc4' // project build.gradle
apply plugin: 'com.android.databinding' // module build.gradle
但是使用official data-binding guide中提到的新方法,您只需在模块的build.gradle
文件中添加以下设置。
android {
....
dataBinding {
enabled = true
}
}
上面提到的错误检查已经消失,您甚至可以直接使用binding.stub
而没有任何问题。
binding.stub.setLayoutResource(...)
binding.stub.inflate()
...
更新2
您可以直接使用binding.stub.someViewStubMethod()
,但在编译时会失败。您仍然需要使用binding.stub.getViewStub().someMethod()
。但是,就在最近,无论采用哪种方法将数据绑定添加到项目中,错误检查都会以某种方式消失。
答案 0 :(得分:1)
您不应该以这种方式调用getViewStub
方法。 binding.stub
已经是您在布局item_post中放置的ViewStub。你应该致电binding.stub.setLayoutResource()
答案 1 :(得分:0)
Android Studio无法正确识别ViewStubProxy。只需在操纵之前施放它。
<plist version="1.0">
<dict>
……..
<key>NSAppTransportSecurity</key>
<dict>
<key>Allow Arbitrary Loads</key>
<true/>
</dict>
……..
</dict>
</plist>
错误消失了:)