LoginSignup
0
0

More than 5 years have passed since last update.

RealmListをデータバインディングで使うときにハマった

Posted at

まえおき

自分用のメモです。


models/
// 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;  
}

みたいなモデルで、

Slice.png

こんな感じのカード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 に追記しましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0