【发布时间】:2017-05-16 02:01:44
【问题描述】:
我有一个MovieViewModel 类,在我的布局文件中用作变量。
<data>
<variable
name="vm"
type="udacity.nanodegree.android.p2.model.comum.MovieViewModel"/>;
</data>
生成一个名为 context 的特殊变量,用于绑定 根据需要表达。 context 的值是来自 根视图的 getContext()。上下文变量将被覆盖 具有该名称的显式变量声明。
我需要通过布局文件中的构造函数将这个特殊变量 context 传递给我的类:
public class MovieViewModel {
private Context context;
public MovieViewModel(Context context) {
this.context = context;
}
}
有没有办法做到这一点?
如果不可能,我想将其传递给我的属性,例如:
<TextView
android:id="@+id/text_release"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:padding="2dp"
android:text="@{vm.releaseDateFormated(context) ?? ``}"
tools:text="0000"/>
在MovieViewModel 中使用上下文如下:
public String getReleaseDateFormated (Context context){
return releaseDate == null? null: context.getString(R.string.dateToYear, releaseDate);
根据这个answer我可以这样做,但我尝试并收到错误:
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:cannot find method releaseDateFormated(android.content.Context) in class udacity.nanodegree.android.p2.model.comum.MovieViewModel
file:C:\Users\alexandre\Udacity\Nanodegrees\AndroidDevelopment\P2-PopularMovies\app\src\main\res\layout\fragment_detail.xml
loc:74:40 - 74:70
****\ data binding error ****
【问题讨论】:
标签: android android-layout android-databinding