2017-11-19 4 views
0

が、問題は、我々は、任意の単一のオブジェクトのプロパティ変更火災OnChangedこれをLiveDataライブデータの観測に成功し、開発者のガイドラインどおりのAndroidプロジェクト実装Androidのアーキテクチャコンポーネントで

mQueViewModel.getLiveQuestion().observe(this, new Observer<Question>() { 
     @Override 
     public void onChanged(@Nullable Question question) { 
      Log.i(TAG, "onChanged: "); 
      setQuestionDetails(); 
     } 
    }); 

を使用して完全なオブジェクトの変化を観察することができますですすべてのデータを再度UIに設定してください。onDescriptionChangeonImageChange ...

答えて

0

のようにプロパティを変更する方法はありません。これを行うには、ViewModelを使用してデータを分割することができます。

private LiveData<Question> questions; 
private MediatorLiveData<String> description; 

public MQueViewModel() { 

    description = new MediatorLiveData<>(); 
    description.addSource(questions, new Observer<Question>() { 
     @Override 
     public void onChanged(@Nullable Question question) { 
      if (question == null) return; 
      if (!question.description.equals(description.getValue())) { 
       description.setValue(question.description); 
      } 
     } 
    }); 

} 

をし、あなたのUIがdescriptionに加入持っているよりも持っている。このような何かが動作するはずです。同様のMediatorLiveDataを他のプロパティ変更に追加してください。

+0

あなたは非常に長い解決策を考えていませんか、クラスに20のプロパティがあると思いますか? –

+0

はい、私はそれが非常に長いと思います。時期尚早の最適化と思われるので、私はそれをまったくやっていません。しかし、本当にしたい場合は、それは方法です! – Budius

+0

Realmが提供するgetChangedFields()、isFieldChanged(String fieldName) –

関連する問題