使用DataBinding后,编译提示找不到BR类
在apapter中使用了DataBinding,编写的时候没有提示异常,但在运行时提示找不到BR类。
在build.gradle文件中有
dataBinding{
enabled true
}
Adapter中:
import com.tool.room.BR;
@Override
public ConsumeListAdapter.MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
ViewDataBinding dataBinding = DataBindingUtil.inflate(LayoutInflater.from(viewGroup.getContext()),
R.layout.detail_consume_list_item,viewGroup,false);
MyViewHolder myViewHolder = new MyViewHolder(dataBinding.getRoot());
myViewHolder.setDataBinding(dataBinding);
return myViewHolder;
}
@Override
public void onBindViewHolder(ConsumeListAdapter.MyViewHolder myViewHolder, int i) {
ConsumeBean bean = mList.get(i);
myViewHolder.getDataBinding().setVariable(BR.bean,bean);
myViewHolder.getDataBinding().executePendingBindings();
}
Xml中
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="bean"
type="com.tool.room.bean.ConsumeBean"/>
<import type="com.tool.room.utils.DataBindingUtil"/>
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@{bean.time}"
android:textColor="@color/context_text_color"
android:textSize="@dimen/sp_13"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@{DataBindingUtil.getConsumeTypeById(bean.type)}"
android:textColor="@color/context_text_color"
android:textSize="@dimen/sp_13"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@{bean.money}"
android:textColor="@color/context_text_color"
android:textSize="@dimen/sp_13"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@{bean.remark}"
android:textColor="@color/context_text_color"
android:textSize="@dimen/sp_13"/>
</LinearLayout>
</layout>
在build.gradle文件中有
dataBinding{
enabled true
}
Adapter中:
import com.tool.room.BR;
@Override
public ConsumeListAdapter.MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
ViewDataBinding dataBinding = DataBindingUtil.inflate(LayoutInflater.from(viewGroup.getContext()),
R.layout.detail_consume_list_item,viewGroup,false);
MyViewHolder myViewHolder = new MyViewHolder(dataBinding.getRoot());
myViewHolder.setDataBinding(dataBinding);
return myViewHolder;
}
@Override
public void onBindViewHolder(ConsumeListAdapter.MyViewHolder myViewHolder, int i) {
ConsumeBean bean = mList.get(i);
myViewHolder.getDataBinding().setVariable(BR.bean,bean);
myViewHolder.getDataBinding().executePendingBindings();
}
Xml中
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="bean"
type="com.tool.room.bean.ConsumeBean"/>
<import type="com.tool.room.utils.DataBindingUtil"/>
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@{bean.time}"
android:textColor="@color/context_text_color"
android:textSize="@dimen/sp_13"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@{DataBindingUtil.getConsumeTypeById(bean.type)}"
android:textColor="@color/context_text_color"
android:textSize="@dimen/sp_13"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@{bean.money}"
android:textColor="@color/context_text_color"
android:textSize="@dimen/sp_13"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@{bean.remark}"
android:textColor="@color/context_text_color"
android:textSize="@dimen/sp_13"/>
</LinearLayout>
</layout>
...全文
相关推荐
Databinding使用、Databinding原理、Androidx集成Databinding、Databinding源码分析、Databinding双向绑定原理
简介 Databinding是谷歌的一个官方支持库,它允许您使用声明性格式而不是通过编程方式将布局中的UI组件绑定到应用程序中的数据源。 通常在活动中使用调用UI框架方法的代码来定义布局。例如,调用findViewById()以查找TextView窗口小部件并将其绑定到变量。 因为它通过在布局文件中绑定组件,您可以删除活动中的许多UI框架调用,从而使它们更易于维护。这也可以提高应用程序的性能,并有助于防止内存泄漏和空指针异常。 Androidx集成Databinding 1、将dataBinding元素添加到 build.gradle应用程序模块中 android { ......
Android Databinding 与 RecyclerView 完美结合
Android Databinding 与 RecyclerView 完美结合。Android Databinding 与 RecyclerView 完美结合。
DataBinding基本使用
dataBinding基本使用方法
DataBinding中ViewStub例子
DataBinding中ViewStub例子
DataBinding在recycleview中的使用
DataBinding在recycleview中的使用,DataBinding在recycleview中的使用


