Android 绑定适配器 error.NonExistentClass
Android BindingAdapter error.NonExistentClass
这是我的 BindingAdapter
@InverseBindingMethods({
@InverseBindingMethod(type = RecyclerView.class, attribute = "lastAdapter", method = "getLastAdapter"),
})
public class RecyclerViewBindingAdapter {
@BindingAdapter(value = {"lastAdapter"}, requireAll = false)
public static void setLastAdapter(RecyclerView view, LastAdapter adapter) {
view.setAdapter(adapter);
}
@InverseBindingAdapter(attribute = "lastAdapter")
public static LastAdapter getLastAdapter(RecyclerView view) {
return (LastAdapter) view.getAdapter();
}
}
我已经在 gradle 上添加了 RecyclerView 依赖项:
compile "com.android.support:recyclerview-v7:25.3.1"
这是我在布局中使用的方式:
<android.support.v7.widget.RecyclerView
app:lastAdapter = "@{viewModel.adapter}"
... />
我已经在膨胀这个布局后设置了 viewModel 绑定变量。但是每当我 运行 我的代码时, gradle 总是显示以下错误
Error:(48, 34) Cannot find the setter for attribute 'app:lastAdapter' with parameter type error.NonExistentClass on android.support.v7.widget.RecyclerView.
我可以通过从我的布局中删除任何 app:lastAdapter
然后清理和重建,再次重写那些 app:lastAdapter
属性然后重建项目来解决这个问题,一切正常。
这个不太方便解决
正如乔治在上面的评论中所说 "BindingAdapter takes a LastAdapter, but adapter appears to be a different type"
这就是变量的分配方式:
var adapter = LastAdapter(data, BR.item).map<MenuLinked, MenuItemBinding>(R.layout.menu_item)
DataBinding 库似乎无法确定来自 Kotlin 的隐式数据类型声明,因此需要显式定义:
var adapter : LastAdapter = LastAdapter(data, BR.item).map<MenuLinked, MenuItemBinding>(R.layout.menu_item)
运行 在 android studio 终端中执行此命令并再次构建项目
./gradlew clean assemble
这是我的 BindingAdapter
@InverseBindingMethods({
@InverseBindingMethod(type = RecyclerView.class, attribute = "lastAdapter", method = "getLastAdapter"),
})
public class RecyclerViewBindingAdapter {
@BindingAdapter(value = {"lastAdapter"}, requireAll = false)
public static void setLastAdapter(RecyclerView view, LastAdapter adapter) {
view.setAdapter(adapter);
}
@InverseBindingAdapter(attribute = "lastAdapter")
public static LastAdapter getLastAdapter(RecyclerView view) {
return (LastAdapter) view.getAdapter();
}
}
我已经在 gradle 上添加了 RecyclerView 依赖项:
compile "com.android.support:recyclerview-v7:25.3.1"
这是我在布局中使用的方式:
<android.support.v7.widget.RecyclerView
app:lastAdapter = "@{viewModel.adapter}"
... />
我已经在膨胀这个布局后设置了 viewModel 绑定变量。但是每当我 运行 我的代码时, gradle 总是显示以下错误
Error:(48, 34) Cannot find the setter for attribute 'app:lastAdapter' with parameter type error.NonExistentClass on android.support.v7.widget.RecyclerView.
我可以通过从我的布局中删除任何 app:lastAdapter
然后清理和重建,再次重写那些 app:lastAdapter
属性然后重建项目来解决这个问题,一切正常。
这个不太方便解决
正如乔治在上面的评论中所说 "BindingAdapter takes a LastAdapter, but adapter appears to be a different type" 这就是变量的分配方式:
var adapter = LastAdapter(data, BR.item).map<MenuLinked, MenuItemBinding>(R.layout.menu_item)
DataBinding 库似乎无法确定来自 Kotlin 的隐式数据类型声明,因此需要显式定义:
var adapter : LastAdapter = LastAdapter(data, BR.item).map<MenuLinked, MenuItemBinding>(R.layout.menu_item)
运行 在 android studio 终端中执行此命令并再次构建项目
./gradlew clean assemble