teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

4

文言削除

2020/04/28 08:23

投稿

Taka787
Taka787

スコア23

title CHANGED
File without changes
body CHANGED
@@ -2,71 +2,4 @@
2
2
  kotlinを使用しandroidアプリ開発を行っているのですが、現在list内の**pileNumber**という項目をアプリ上に表示させようとしています。
3
3
  **pileNunmber**という項目には文字列や数値が混在する場合があり、もし```.toIntOrNull()```をしてnullにならなかった場合には、数値のみが含まれているので数値型の昇順で**pileNumber**を表示でき、もしnullになった場合は、文字列が含まれていることになるのでその時は文字列型の昇順で表示できると思っています。
4
4
  以下コードでビルド実行してみましたが数値のみの場合も文字列ソートのままでした
5
- 解決法をネットでググってみましたが見つかりませんでしたのでもしわかる方いらっしゃいましたらご教授お願い致します。
5
+ 解決法をネットでググってみましたが見つかりませんでしたのでもしわかる方いらっしゃいましたらご教授お願い致します。
6
-
7
- ```kotlin
8
- class ConstructionNumberGroupData(val construction: ConstructionReadData, val list: List<PileNumberGroupData>) {
9
-
10
- init {
11
- val numericData = list.filter {
12
- it.pileNumber.conversion()
13
- }
14
- val allNumeric = list.count() == numericData.count() // 長さを比較して一致していたら全部数値データ
15
- if (allNumeric) {
16
- list.sortedBy {
17
- it.pileNumber.toInt() // 数値でソートする
18
- //Log.d("Int", list.toString())
19
-
20
- }
21
-
22
- } else {
23
- list.sortedBy {
24
- it.pileNumber.toString() // 文字列でソートする
25
- Log.d("String", it.pileNumber.toString())
26
- }
27
-
28
- }
29
- }
30
- }
31
-
32
-
33
- ```
34
-
35
-
36
- ```kotlin
37
- class PileNumber {
38
- val value: String
39
-
40
- constructor(pile: Pile?) {
41
- value = (pile?.pileNo ?: 0) as String
42
- }
43
-
44
- constructor(pileNumber: String) {
45
- value = pileNumber
46
- }
47
-
48
- override fun equals(other: Any?): Boolean {
49
- if (other is PileNumber) {
50
- return value == other.value
51
- }
52
- return false
53
- }
54
-
55
- override fun toString(): String {
56
- return value
57
- }
58
-
59
- fun toInt() : Int {
60
- return value.toIntOrNull() ?: 0
61
- }
62
-
63
- fun conversion(): Boolean {
64
- return value.toIntOrNull() != null
65
- }
66
-
67
- override fun hashCode(): Int {
68
- return super.hashCode()
69
- }
70
-
71
- }
72
- ```

3

タグ削除

2020/04/28 08:23

投稿

Taka787
Taka787

スコア23

title CHANGED
File without changes
body CHANGED
File without changes

2

質問内容の変更

2020/04/28 02:38

投稿

Taka787
Taka787

スコア23

title CHANGED
@@ -1,1 +1,1 @@
1
- Androidアプリ開発でDBデータを条件分岐しソート表示させたい
1
+ Androidアプリ開発でlistデータを条件分岐しソート表示させたい
body CHANGED
@@ -1,15 +1,72 @@
1
1
  ### 実現したいこと
2
- kotlinを使用しandroidアプリ開発を行っているのですが、現在DB内の**pileNo**というカラムをアプリ上に表示させようとしています。
2
+ kotlinを使用しandroidアプリ開発を行っているのですが、現在list内の**pileNumber**という項目をアプリ上に表示させようとしています。
3
- **pileNo**というカラムには文字列や数値が混在する場合があり、もし```TO_NUMBER(pileNo)```をして数値変換エラーにならなかった場合には、数値のみが含まれているので数値型の昇順で**pileNo**を表示でき、もし数値変換エラーになった場合は、文字列が含まれていることになるのでその時は文字列型の昇順で表示できると思っています。
3
+ **pileNunmber**という項目には文字列や数値が混在する場合があり、もし```.toIntOrNull()```をしてnullにならなかった場合には、数値のみが含まれているので数値型の昇順で**pileNumber**を表示でき、もしnullになった場合は、文字列が含まれていることになるのでその時は文字列型の昇順で表示できると思っています。
4
- しかし、試しに以下SQLでビルド実行してみましたがエラが出てしました
4
+ 以下コードでビルド実行してみましたが数値のみの場合も文字列ソトのまました
5
5
  解決法をネットでググってみましたが見つかりませんでしたのでもしわかる方いらっしゃいましたらご教授お願い致します。
6
6
 
7
+ ```kotlin
8
+ class ConstructionNumberGroupData(val construction: ConstructionReadData, val list: List<PileNumberGroupData>) {
9
+
10
+ init {
11
+ val numericData = list.filter {
12
+ it.pileNumber.conversion()
13
+ }
14
+ val allNumeric = list.count() == numericData.count() // 長さを比較して一致していたら全部数値データ
15
+ if (allNumeric) {
16
+ list.sortedBy {
17
+ it.pileNumber.toInt() // 数値でソートする
18
+ //Log.d("Int", list.toString())
19
+
20
+ }
21
+
7
- ↓エラー文です。
22
+ } else {
23
+ list.sortedBy {
24
+ it.pileNumber.toString() // 文字列でソートする
25
+ Log.d("String", it.pileNumber.toString())
26
+ }
27
+
28
+ }
29
+ }
30
+ }
31
+
32
+
8
33
  ```
9
- Schema export directory is not provided to the annotation processor so we cannot export the schema. You can either provide `room.schemaLocation` annotation processor argument OR set exportSchema to false.
10
- ```
11
34
 
12
35
 
13
- ```SQL
36
+ ```kotlin
37
+ class PileNumber {
38
+ val value: String
39
+
40
+ constructor(pile: Pile?) {
41
+ value = (pile?.pileNo ?: 0) as String
42
+ }
43
+
44
+ constructor(pileNumber: String) {
45
+ value = pileNumber
46
+ }
47
+
14
- @Query("SELECT * FROM piles WHERE constructionId = :constructionId ORDER BY IF TO_NUMBER(pileNo) ASC ELSE pileNo ASC")
48
+ override fun equals(other: Any?): Boolean {
49
+ if (other is PileNumber) {
50
+ return value == other.value
51
+ }
52
+ return false
53
+ }
54
+
55
+ override fun toString(): String {
56
+ return value
57
+ }
58
+
59
+ fun toInt() : Int {
60
+ return value.toIntOrNull() ?: 0
61
+ }
62
+
63
+ fun conversion(): Boolean {
64
+ return value.toIntOrNull() != null
65
+ }
66
+
67
+ override fun hashCode(): Int {
68
+ return super.hashCode()
69
+ }
70
+
71
+ }
15
72
  ```

1

質問文変更

2020/04/28 02:20

投稿

Taka787
Taka787

スコア23

title CHANGED
File without changes
body CHANGED
@@ -1,11 +1,9 @@
1
1
  ### 実現したいこと
2
2
  kotlinを使用しandroidアプリ開発を行っているのですが、現在DB内の**pileNo**というカラムをアプリ上に表示させようとしています。
3
- **pileNo**というカラムには文字列や数値が混在する場合があり、もし```TO_NUMBER(pileNo)```をして数値変換エラーにならなかった場合には、数値のみが含まれているので数値型の昇順で**pileNo**を表示させたいです。
3
+ **pileNo**というカラムには文字列や数値が混在する場合があり、もし```TO_NUMBER(pileNo)```をして数値変換エラーにならなかった場合には、数値のみが含まれているので数値型の昇順で**pileNo**を表示でき、もし数値変換エラーになっ場合は、文字列が含まれてることになるのその時は文字列型の昇順で表示できると思っています。
4
+ しかし、試しに以下SQLでビルド実行してみましたがエラーが出てしまいました。
4
- 又、もし数値変換エラーになった場合は、文字列れていることになるの時は文字列型の昇順表示させたいす。
5
+ 解決法をネットでググてみましたが見つかりせんしたのでもしわかる方いらっしゃいましらご教授お願致します。
5
6
 
6
- 試しに以下SQLでビルド実行してみましたがエラーが出てしまいました。
7
- 解決法をネットでググってみましたが見つかりませんでしたのでわかる方いらっしゃいましたらご教授お願い致します。
8
-
9
7
  ↓エラー文です。
10
8
  ```
11
9
  Schema export directory is not provided to the annotation processor so we cannot export the schema. You can either provide `room.schemaLocation` annotation processor argument OR set exportSchema to false.