実現したいこと
カレンダーを表示しており、日付をタップするとその日付の詳細画面へ遷移します。
その日付画面で、その日付に紐づけられているレコードを表示したいです。
現状は全部のレコードをクエリして表示させています。
ここからその日付だけのレコードをクエリするように修正したいです。
そのために、LocalDateTime のカラム(datetime)を持っているのですが
datetime が該当する日付であることを条件にクエリできるようにしたいです。
※ViewModel や LiveData などは軽く見ているんですがまだ全然わかっていないので
出来る限りRoomでいきたいです。
気持ち的には、LiveData などの方がいいんだろうと思っているのですが、
(理解に時間がかかるタイプなので)かなりの時間がかかると思っていて、
一度このアプリを完成させた後に、リファクタリングの過程で取り入れていきたいと思っています。
このように、タイミングを後回しにするのは、あまり適切ではないでしょうか?
もしよろしければこちらにもアドバイスいただけますと嬉しいです。
(もしも業務として取り組むならという前提でお願いします。)
どうぞご回答よろしくお願いします。
該当のソースコード
TimeTableDao.java
1@Dao 2public interface TimeTableDao { 3 @Query("SELECT id, title, is_done FROM time_tables") // 現状このメソッドを用いて、全件取得しています。 4 List<TimeTableEntity> getAll(); 5}
TimeTableEntity.java
1@Entity(tableName = "time_tables") 2public class TimeTableEntity { 3 @PrimaryKey(autoGenerate = true) 4 public int id; 5 6 @ColumnInfo(name = "title") 7 @NonNull 8 public String title; 9 10 @ColumnInfo(name = "datetime") 11 public LocalDateTime datetime; 12 13 @ColumnInfo(name = "is_done") 14 public Boolean isDone; 15 16 public TimeTableEntity(String title, Boolean isDone) { 17 this.title = title; 18 setDatetime(); 19 this.isDone = isDone; 20 } 21}
DateFragment.java
1// 取得時処理 2List<TimeTableEntity> returnedTimeTableEntities = new ArrayList<>(); 3AppDatabase database = Room.databaseBuilder(getActivity().getApplicationContext(), 4AppDatabase.class, "TimeTable").build(); 5timeTableDao = database.timeTableDao(); 6returnedTimeTableEntities.addAll(timeTableDao.getAll());
Converters.java
1public class Converters { 2 3 @TypeConverter 4 public static LocalDateTime fromDateTime(String value) { 5 return value == null ? null : LocalDateTime.parse(value); 6 } 7 8 @TypeConverter 9 public static String toDateTime(LocalDateTime datetime) { 10 return datetime == null ? null : datetime.toString(); 11 } 12}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/03/02 13:57