我已经在主命名空间(com.company.product.Model
)下设置了一个程序包以包含我的模型,并且正在使用数据绑定。当生成数据绑定类时,我收到一条错误消息,指出它找不到符号(这是我为模型设置的包)。如果我将模型移到com.company.product
包中,则所有文件都会编译并运行。返回到com.company.product.Model
,并返回相同的错误。我所做的所有搜索都指向XML文件的命名,从而可以在gradle中进行数据绑定。也没有完成整个清理,重建,重启的事情。我确定我很想念这是一个愚蠢的事情,但是可以用另一双眼睛。
包装结构:
com.company.product
; com.company.product.Model
; (不确定大小写是否与此有关)生成的绑定类:
package com.company.product.databinding;
import android.databinding.Bindable;
import android.databinding.DataBindingComponent;
import android.databinding.DataBindingUtil;
import android.databinding.ViewDataBinding;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import com.company.product.Model;
public abstract class TimesheetEntryBinding extends ViewDataBinding {
@NonNull
public final EditText hoursText1;
@NonNull
public final EditText hoursText2;
@NonNull
public final EditText hoursText3;
@NonNull
public final EditText hoursText4;
@NonNull
public final EditText hoursText5;
@NonNull
public final EditText hoursText6;
@NonNull
public final EditText hoursText7;
@NonNull
public final TextView projectNameText;
@Bindable
protected Model.TimesheetEntry mEntry;
protected TimesheetEntryBinding(DataBindingComponent _bindingComponent, View _root,
int _localFieldCount, EditText hoursText1, EditText hoursText2, EditText hoursText3,
EditText hoursText4, EditText hoursText5, EditText hoursText6, EditText hoursText7,
TextView projectNameText) {
super(_bindingComponent, _root, _localFieldCount);
this.hoursText1 = hoursText1;
this.hoursText2 = hoursText2;
this.hoursText3 = hoursText3;
this.hoursText4 = hoursText4;
this.hoursText5 = hoursText5;
this.hoursText6 = hoursText6;
this.hoursText7 = hoursText7;
this.projectNameText = projectNameText;
}
public abstract void setEntry(@Nullable Model.TimesheetEntry entry);
@Nullable
public Model.TimesheetEntry getEntry() {
return mEntry;
}
@NonNull
public static TimesheetEntryBinding inflate(@NonNull LayoutInflater inflater,
@Nullable ViewGroup root, boolean attachToRoot) {
return inflate(inflater, root, attachToRoot, DataBindingUtil.getDefaultComponent());
}
@NonNull
public static TimesheetEntryBinding inflate(@NonNull LayoutInflater inflater,
@Nullable ViewGroup root, boolean attachToRoot, @Nullable DataBindingComponent component) {
return DataBindingUtil.<TimesheetEntryBinding>inflate(inflater, com.company.product.R.layout.timeentry_item, root, attachToRoot, component);
}
@NonNull
public static TimesheetEntryBinding inflate(@NonNull LayoutInflater inflater) {
return inflate(inflater, DataBindingUtil.getDefaultComponent());
}
@NonNull
public static TimesheetEntryBinding inflate(@NonNull LayoutInflater inflater,
@Nullable DataBindingComponent component) {
return DataBindingUtil.<TimesheetEntryBinding>inflate(inflater, com.company.product.R.layout.timeentry_item, null, false, component);
}
public static TimesheetEntryBinding bind(@NonNull View view) {
return bind(view, DataBindingUtil.getDefaultComponent());
}
public static TimesheetEntryBinding bind(@NonNull View view,
@Nullable DataBindingComponent component) {
return (TimesheetEntryBinding)bind(component, view, com.company.product.R.layout.timeentry_item);
}
}
这是xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<data class="TimesheetEntryBinding">
<import type="android.view.View"/>
<variable
name="entry"
type="com.company.product.Model.TimesheetEntry" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/projectNameText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@{entry.projectName}" />
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/hoursText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:width="@dimen/time_timeEntryWidth"
android:ems="10"
android:inputType="numberDecimal"
android:text="" />
<EditText
android:id="@+id/hoursText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:width="@dimen/time_timeEntryWidth"
android:ems="10"
android:inputType="numberDecimal"
android:text="" />
<EditText
android:id="@+id/hoursText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:width="@dimen/time_timeEntryWidth"
android:ems="10"
android:inputType="numberDecimal"
android:text="" />
<EditText
android:id="@+id/hoursText4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:width="@dimen/time_timeEntryWidth"
android:ems="10"
android:inputType="numberDecimal"
android:text="" />
<EditText
android:id="@+id/hoursText5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:width="@dimen/time_timeEntryWidth"
android:ems="10"
android:inputType="numberDecimal"
android:text="" />
<EditText
android:id="@+id/hoursText6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:width="@dimen/time_timeEntryWidth"
android:ems="10"
android:inputType="numberDecimal"
android:text="" />
<EditText
android:id="@+id/hoursText7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:width="@dimen/time_timeEntryWidth"
android:ems="10"
android:inputType="numberDecimal"
android:text="" />
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
</layout>
答案 0 :(得分:1)
我从这篇帖子Data binding "error: cannot find symbol class Models"中发现自己在做错什么。
我将包命名为“ Model”,而不是“ model”。一旦重构,就建立了数据绑定类。