0
다음 객체와의 데이터 바인딩 문제가 있습니다. 나는 ScanInfo라는 객체 클래스 호출을 가지고있다.Android 데이터 바인딩 : 오류 : 지정된 리소스 유형이 없습니다.
public class ScanInfo extends BaseObservable implements Parcelable {
private BarcodeItem barcodeItem;
private ParcelInfo parcelInfo;
private int childCount = 0;
private boolean showQuantity;
private boolean showDeviation;
private boolean hasParcel;
private boolean hasBarcode;
public ScanInfo(BarcodeItem barcodeItem) {
this.barcodeItem = barcodeItem;
}
public ScanInfo(ParcelInfo parcelInfo) {
this.parcelInfo = parcelInfo;
}
public ScanInfo(BarcodeItem barcodeItem, ParcelInfo parcelInfo) {
this.barcodeItem = barcodeItem;
this.parcelInfo = parcelInfo;
}
@Bindable
public BarcodeItem getBarcodeItem() {
return barcodeItem;
}
public void setBarcodeItem(BarcodeItem barcodeItem) {
this.barcodeItem = barcodeItem;
notifyPropertyChanged(BR.hasBarcode);
}
@Bindable
public ParcelInfo getParcelInfo() {
return parcelInfo;
}
public void setParcelInfo(ParcelInfo parcelInfo) {
this.parcelInfo = parcelInfo;
notifyPropertyChanged(BR.hasParcel);
}
@Bindable
public boolean isHasParcel() {
return hasParcel;
}
@Bindable
public boolean isHasBarcode() {
return hasBarcode;
}
public void setChildCount(int childCount) {
this.childCount = childCount;
}
public void setShowQuantity(boolean showQuantity) {
this.showQuantity = showQuantity;
}
public void setShowDeviation(boolean showDeviation) {
this.showDeviation = showDeviation;
}
@Bindable
public String getBarcodeContent() {
return barcodeItem.getContent();
}
}
및 어댑터와 어댑터 getView 메소드에서 목록 항목에 바인드했습니다.이 작업을 수행했습니다.
convertView = _inflater.inflate(R.layout.barcode_list_item, parent, false);
BarcodeListItemBinding binding = BarcodeListItemBinding.bind(convertView);
ScanInfo scanInfo = getItem(position);
BarcodeItem barcodeItem = scanInfo.getBarcodeItem();
if (barcodeItem != null) {
scanInfo.setChildCount(getChildCount(barcodeItem));
scanInfo.setShowQuantity(barcodeItem.getQuantity() > 1 || (barcodeItem.getQuantity() == 1 && _showParcelQuantityOne));
scanInfo.setShowDeviation(_deviations != null && _deviations.size() > 0 && hasDeviation(barcodeItem));
}
binding.setScanInfo(scanInfo);
binding.executePendingBindings();
및 목록 항목 리소스 파일이
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data>
<import type="android.view.View" />
<import type="xx.xxx.xxx.BarcodeItem" />
<import type="xx.xxx.xxx.ParcelInfo" />
<variable
name="scanInfo"
type="xx.xxx.xxx.ScanInfo" />
</data>
...
<TextView
android:id="@+id/textBarcode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="middle"
android:gravity="top"
android:singleLine="true"
android:textAppearance="?android:textAppearanceMedium"
android:visibility="visible"
android:text="@{scanInfo.barcodeItem.content}"
tools:text="123123123123ABABABABABABABA" />
...
</layout>
처럼하지만 컴파일 할 때 항상 그 오류 다음
F 제공 : \ ExProjects ... \ 이벤트 \ 4.171.1.0 \를 res \ layout \ barcode_list_item.xml : 57 : 31-62 : AAPT : resourc 유형이 지정되지 않았습니다 ('textIn'값 '@ {scanInfo.barcodeItem.content}').
내가 여기서 잘못했는지 궁금합니다. 이 문제를 해결하도록 도와주세요.
당신이 사용 했 참조하는 방법을 사용할 수 있습니다 :'dataBinding.enabled = TRUE '당신의 build.gradle 파일을? –
[Gradle : 자원 유형이 지정되지 않았습니다 ('텍스트'에 '@ {user.name}'값 사용). 데이터 바인딩이 작동하지 않음] (http://stackoverflow.com/questions/37723767/gradle-no-resource-type-specified-at-text-with-value-user-name-databi) – tynn
@GeorgeMount 예 내가 작업하고있는 모듈이 모듈을 다른 모든 모듈에 추가 한 후에 작동한다. – Sanath