2017-02-24 4 views
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}').

내가 여기서 잘못했는지 궁금합니다. 이 문제를 해결하도록 도와주세요.

+1

당신이 사용 했 참조하는 방법을 사용할 수 있습니다 :'dataBinding.enabled = TRUE '당신의 build.gradle 파일을? –

+0

[Gradle : 자원 유형이 지정되지 않았습니다 ('텍스트'에 '@ {user.name}'값 사용). 데이터 바인딩이 작동하지 않음] (http://stackoverflow.com/questions/37723767/gradle-no-resource-type-specified-at-text-with-value-user-name-databi) – tynn

+0

@GeorgeMount 예 내가 작업하고있는 모듈이 모듈을 다른 모든 모듈에 추가 한 후에 작동한다. – Sanath

답변

0

당신은

android:text="@{scanInfo::getBarcodeContent}"