documentationのようにAndroid Room Persistance Library用のカスタムTypeConverterを使用しようとしています。主なアイデアは、すべてのSqlite SUMをフォーマットして、Android Room Daoが実行されていることを選択することです。Android用ルームタイプコンバーター
マイコード:
@TypeConverter
public static double toDouble(String str) {
return FormatHelper.formatAmount(Double.parseDouble(str));
}
@TypeConverter
public static String fromDouble(double doub) {
return String.valueOf(FormatHelper.formatAmount(doub));
}
私はすでに、データを消去し、アプリを再構築しようとしました。 同じクラスのDateのコンバーターが機能しています。 Android TypeConvertersはプリミティブ変数をサポートしていませんか?
EDIT:
それはデータベース全体にわたって使用されているので、私はRoomDatabaseクラスでのTypeConverterを登録します。具体的には私の問題について
:私はこのような私のダオクラスでクエリを持っている場合:
@Query("SELECT SUM(quantity) FROM production_plan_item")
Double getActivePlanItemsCount();
それは時々2.30000000000001のような値を返すことがあります。
私は、タイプコンバータがクエリの戻り値を処理するために使用されると考えました。そして、データベースに2倍のデータを保存する前、または2倍のデータを選択する度に、私のTypeConverterが私の倍のラウンドになり、何かを選択するたびにラウンドする必要はありません。
それ以外の場合は、選択したすべてのダブルを手動で丸める必要があります。
「主なアイデアは、すべてのSqlite SUMをフォーマットして、Android Room Daoが実行していることを選択することです」 - それは意味をなさない。書式設定は永続ライブラリの役割ではありません。これは、プレゼンターまたはユーザーインターフェイスに関連付けられた他のコードの責任です。それ以外に、これらの 'TypeConverter'メソッドをどこに登録していますか?あなたは彼らが何を期待していますか? – CommonsWare
@CommonsWare私は私の質問を編集しました。 – Yoda066