質問編集履歴

4

文言削除

2020/04/28 08:23

投稿

Taka787
Taka787

スコア23

test CHANGED
File without changes
test CHANGED
@@ -7,137 +7,3 @@
7
7
  以下コードでビルド実行してみましたが数値のみの場合も文字列ソートのままでした
8
8
 
9
9
  解決法をネットでググってみましたが見つかりませんでしたのでもしわかる方いらっしゃいましたらご教授お願い致します。
10
-
11
-
12
-
13
- ```kotlin
14
-
15
- class ConstructionNumberGroupData(val construction: ConstructionReadData, val list: List<PileNumberGroupData>) {
16
-
17
-
18
-
19
- init {
20
-
21
- val numericData = list.filter {
22
-
23
- it.pileNumber.conversion()
24
-
25
- }
26
-
27
- val allNumeric = list.count() == numericData.count() // 長さを比較して一致していたら全部数値データ
28
-
29
- if (allNumeric) {
30
-
31
- list.sortedBy {
32
-
33
- it.pileNumber.toInt() // 数値でソートする
34
-
35
- //Log.d("Int", list.toString())
36
-
37
-
38
-
39
- }
40
-
41
-
42
-
43
- } else {
44
-
45
- list.sortedBy {
46
-
47
- it.pileNumber.toString() // 文字列でソートする
48
-
49
- Log.d("String", it.pileNumber.toString())
50
-
51
- }
52
-
53
-
54
-
55
- }
56
-
57
- }
58
-
59
- }
60
-
61
-
62
-
63
-
64
-
65
- ```
66
-
67
-
68
-
69
-
70
-
71
- ```kotlin
72
-
73
- class PileNumber {
74
-
75
- val value: String
76
-
77
-
78
-
79
- constructor(pile: Pile?) {
80
-
81
- value = (pile?.pileNo ?: 0) as String
82
-
83
- }
84
-
85
-
86
-
87
- constructor(pileNumber: String) {
88
-
89
- value = pileNumber
90
-
91
- }
92
-
93
-
94
-
95
- override fun equals(other: Any?): Boolean {
96
-
97
- if (other is PileNumber) {
98
-
99
- return value == other.value
100
-
101
- }
102
-
103
- return false
104
-
105
- }
106
-
107
-
108
-
109
- override fun toString(): String {
110
-
111
- return value
112
-
113
- }
114
-
115
-
116
-
117
- fun toInt() : Int {
118
-
119
- return value.toIntOrNull() ?: 0
120
-
121
- }
122
-
123
-
124
-
125
- fun conversion(): Boolean {
126
-
127
- return value.toIntOrNull() != null
128
-
129
- }
130
-
131
-
132
-
133
- override fun hashCode(): Int {
134
-
135
- return super.hashCode()
136
-
137
- }
138
-
139
-
140
-
141
- }
142
-
143
- ```

3

タグ削除

2020/04/28 08:23

投稿

Taka787
Taka787

スコア23

test CHANGED
File without changes
test CHANGED
File without changes

2

質問内容の変更

2020/04/28 02:38

投稿

Taka787
Taka787

スコア23

test CHANGED
@@ -1 +1 @@
1
- Androidアプリ開発でDBデータを条件分岐しソート表示させたい
1
+ Androidアプリ開発でlistデータを条件分岐しソート表示させたい
test CHANGED
@@ -1,20 +1,66 @@
1
1
  ### 実現したいこと
2
2
 
3
- kotlinを使用しandroidアプリ開発を行っているのですが、現在DB内の**pileNo**というカラムをアプリ上に表示させようとしています。
3
+ kotlinを使用しandroidアプリ開発を行っているのですが、現在list内の**pileNumber**という項目をアプリ上に表示させようとしています。
4
4
 
5
- **pileNo**というカラムには文字列や数値が混在する場合があり、もし```TO_NUMBER(pileNo)```をして数値変換エラーにならなかった場合には、数値のみが含まれているので数値型の昇順で**pileNo**を表示でき、もし数値変換エラーになった場合は、文字列が含まれていることになるのでその時は文字列型の昇順で表示できると思っています。
5
+ **pileNunmber**という項目には文字列や数値が混在する場合があり、もし```.toIntOrNull()```をしてnullにならなかった場合には、数値のみが含まれているので数値型の昇順で**pileNumber**を表示でき、もしnullになった場合は、文字列が含まれていることになるのでその時は文字列型の昇順で表示できると思っています。
6
6
 
7
- しかし、試しに以下SQLでビルド実行してみましたがエラが出てしました
7
+ 以下コードでビルド実行してみましたが数値のみの場合も文字列ソトのまました
8
8
 
9
9
  解決法をネットでググってみましたが見つかりませんでしたのでもしわかる方いらっしゃいましたらご教授お願い致します。
10
10
 
11
11
 
12
12
 
13
- ↓エラー文です。
13
+ ```kotlin
14
14
 
15
- ```
15
+ class ConstructionNumberGroupData(val construction: ConstructionReadData, val list: List<PileNumberGroupData>) {
16
16
 
17
- 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.
17
+
18
+
19
+ init {
20
+
21
+ val numericData = list.filter {
22
+
23
+ it.pileNumber.conversion()
24
+
25
+ }
26
+
27
+ val allNumeric = list.count() == numericData.count() // 長さを比較して一致していたら全部数値データ
28
+
29
+ if (allNumeric) {
30
+
31
+ list.sortedBy {
32
+
33
+ it.pileNumber.toInt() // 数値でソートする
34
+
35
+ //Log.d("Int", list.toString())
36
+
37
+
38
+
39
+ }
40
+
41
+
42
+
43
+ } else {
44
+
45
+ list.sortedBy {
46
+
47
+ it.pileNumber.toString() // 文字列でソートする
48
+
49
+ Log.d("String", it.pileNumber.toString())
50
+
51
+ }
52
+
53
+
54
+
55
+ }
56
+
57
+ }
58
+
59
+ }
60
+
61
+
62
+
63
+
18
64
 
19
65
  ```
20
66
 
@@ -22,8 +68,76 @@
22
68
 
23
69
 
24
70
 
25
- ```SQL
71
+ ```kotlin
26
72
 
73
+ class PileNumber {
74
+
75
+ val value: String
76
+
77
+
78
+
79
+ constructor(pile: Pile?) {
80
+
81
+ value = (pile?.pileNo ?: 0) as String
82
+
83
+ }
84
+
85
+
86
+
87
+ constructor(pileNumber: String) {
88
+
89
+ value = pileNumber
90
+
91
+ }
92
+
93
+
94
+
27
- @Query("SELECT * FROM piles WHERE constructionId = :constructionId ORDER BY IF TO_NUMBER(pileNo) ASC ELSE pileNo ASC")
95
+ override fun equals(other: Any?): Boolean {
96
+
97
+ if (other is PileNumber) {
98
+
99
+ return value == other.value
100
+
101
+ }
102
+
103
+ return false
104
+
105
+ }
106
+
107
+
108
+
109
+ override fun toString(): String {
110
+
111
+ return value
112
+
113
+ }
114
+
115
+
116
+
117
+ fun toInt() : Int {
118
+
119
+ return value.toIntOrNull() ?: 0
120
+
121
+ }
122
+
123
+
124
+
125
+ fun conversion(): Boolean {
126
+
127
+ return value.toIntOrNull() != null
128
+
129
+ }
130
+
131
+
132
+
133
+ override fun hashCode(): Int {
134
+
135
+ return super.hashCode()
136
+
137
+ }
138
+
139
+
140
+
141
+ }
28
142
 
29
143
  ```

1

質問文変更

2020/04/28 02:20

投稿

Taka787
Taka787

スコア23

test CHANGED
File without changes
test CHANGED
@@ -2,15 +2,11 @@
2
2
 
3
3
  kotlinを使用しandroidアプリ開発を行っているのですが、現在DB内の**pileNo**というカラムをアプリ上に表示させようとしています。
4
4
 
5
- **pileNo**というカラムには文字列や数値が混在する場合があり、もし```TO_NUMBER(pileNo)```をして数値変換エラーにならなかった場合には、数値のみが含まれているので数値型の昇順で**pileNo**を表示させたいです。
5
+ **pileNo**というカラムには文字列や数値が混在する場合があり、もし```TO_NUMBER(pileNo)```をして数値変換エラーにならなかった場合には、数値のみが含まれているので数値型の昇順で**pileNo**を表示でき、もし数値変換エラーになっ場合は、文字列が含まれてることになるのその時は文字列型の昇順で表示できると思っています。
6
6
 
7
- 数値変換エラーになった場合は、文字列れてることになるのでその時は文字列型の昇順で表示させいです
7
+ しかしに以下SQLでビルド実行してみましたがエラーが出てしまいました。
8
8
 
9
-
10
-
11
- 試しに以下SQLでビルド実行してみましたがエラーが出てしまいました。
12
-
13
- 解決法をネットでググってみましたが見つかりませんでしたのでわかる方いらっしゃいましたらご教授お願い致します。
9
+ 解決法をネットでググってみましたが見つかりませんでしたのでもしわかる方いらっしゃいましたらご教授お願い致します。
14
10
 
15
11
 
16
12