Добавление класса базы данных в приложении на основе MVVM дает проблемы с привязкой - PullRequest
0 голосов
/ 17 мая 2018

Я использую Room Database в своем приложении для Android на базе MVVM. Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я помещаю файл базы данных в код, приложение начинает выдавать ошибки DataBinding, и все ошибки удаляются, когда я удаляю этот файл. Я еще даже не объявил об этом в файле AppModule, и он начинает выдавать ошибку. В чем проблема?

Класс БД:

@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {

    public abstract UserDao userDao();

}

Следующим является Дао:

    @Dao
    public interface UserDao {

        @Query("SELECT * FROM User WHERE userId =:id")
        User findUserById(String id);
}

Ниже приводится модель пользователя:

@Entity
public class User implements Serializable {

    @PrimaryKey
    private int userId;

    private String username;

    private String fullName;

    @Ignore
    private boolean isLive;

    private String createdAt;

    @Ignore
    private boolean requestSent;
    @Ignore
    private boolean isFollowed;

    private String picture;

    private String name;
    @Ignore
    private boolean isFollow;

    private String phone;
}

1 Ответ

0 голосов
/ 17 мая 2018
Please inject inside a AppDatabase class

 /** The AppDatabase instance */
private static AppDatabase mInstance;

/**
 * Gets the singleton instance of AppDatabase.
 *
 * @param context The context.
 * @return The singleton instance of AppDatabase.
 */
public static AppDatabase getDatabaseInstance(Context context)
{
    if (mInstance == null)
    {                                                                           /* The name of the Database table. */
        mInstance = Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "databaseTableName")).build();
    }

    return mInstance;
}


    And make sure to use Cursor not User to findUserById

    @Query("SELECT * FROM User WHERE userId =:id")
    Cursor findUserById(String id);
...