RealmListをデータバインディングで使うときにハマった
まえおき
自分用のメモです。
// Article.java
public class Article extends RealmObject {
@PrimaryKey public long id;
public String title;
public String body;
public long published_at;
public User author;
public RealmList<Like> likes;
}
// Like.java
public class Like extends RealmObject {
@PrimaryKey public long id;
public User user;
}
みたいなモデルで、
こんな感じのカードUIを作ろうとしました。
細かい説明は省略しますが、ざっくり
android:text="@{article.likes.size()}いいね!"
みたいな感じでいいねの表示をしようとしました。
コンパイルエラー:XXXXXXXXBindingが見つかりません
データバインディングのXMLがなんか間違ってるときに出るエラーですね。
コマンドラインでビルドしてみると、
エラー: cannot generate view binders com.sun.tools.javac.code.Symbol$CompletionFailure: io.reactivex.Flowableのクラス・ファイルが見つかりません
エラー5個
みたいなエラーが出ていました。たぶんこれが根本原因でしょう。
io.reactivex.Flowableのクラス・ファイルが見つかりません???
realm-javaは、RxJavaが使える環境であれば Realm#asFlowable()
とか RealmResults#asFlowable()
とか使えるようになっています。
Javaでコンパイルするときには、realmのプロセッサがRxJavaのクラスの存在確認をしたりしつつクラス生成するので、うまいことコンパイルエラーにはならないようになっていますが、データバインディングのプリプロセッサだとそこまで考慮してくれてないのでしょう、たぶん...。
回避するには...
compileOnly 'io.reactivex.rxjava2:rxjava:2.1.7'
を app/build.gradle
に追記しましょう。
Author And Source
この問題について(RealmListをデータバインディングで使うときにハマった), 我々は、より多くの情報をここで見つけました https://qiita.com/YusukeIwaki/items/61d5bd9495b7002f28ed著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .