2017-12-11 12 views
0

私はViewModelクラスとその中のModelクラスを持っています。Androidのデータバインディングとビューモデルが機能しない

class WorksheetViewModel { 

    private Worksheet worksheet; 

    public Worksheet getWorksheet() { 
     return worksheet; 
    } 

    public void setWorksheet(Worksheet worksheet) { 
     this.worksheet = worksheet; 
     if (worksheet != null) showButtons(); 

     Logger.E(worksheet.getShort_text()); 
    } 

これはここで働いている:Logger.E(worksheet.getShort_text());

と私のXMLで

<import type="android.view.View" /> 

<variable 
    name="viewModel" 
    type="viewmodels.WorksheetViewModel" /> 

..

とのTextViewを持つ:

android:text="@{viewModel.worksheet.short_text + `?`}" 

私problemeは、図であり、 Model.worksheet.short_textは常にnullです。どうして?

binding.setViewModel(new WorksheetViewModel()); 
binding.executePendingBindings(); 

はまた、私は私のワークシート内のすべての

Worksheet extends BaseObservable 

@Bindable 
    public String getShort_text() { 
     return short_text; 
    } 

を持って

+0

トライアンドロイド:テキスト= "@ {?viewModel.worksheet.getShort_text +' '}" –

答えて

2

問題はあなただけでもWorksheetオブジェクトを持ってbinding.setViewModel(new WorksheetViewModel());が、WorksheerViewModelの結合にViewModelに設定されていますそれは空白です。

だから、これがあるべき

WorksheetViewModel viewModel = new WorksheetViewModel(); 
viewModel.setWorksheet(new WorkSheet('short text value')) 
binding.setViewModel(viewModel); 
関連する問題