質問編集履歴

1

文法の修正

2020/07/04 00:36

投稿

tege
tege

スコア29

test CHANGED
File without changes
test CHANGED
@@ -1,28 +1,8 @@
1
- 教材を見ながらandroid studioでスケジュール管理を行うアプリを作成しているのですが、現在は登録した順に表示されるだけなのです日付の降順でソートして表示させたいのですが現在のソースからどのようにすれば日付の降順で表示を行えるでしょうか?
1
+ 教材を見ながらandroid studioでスケジュール管理を行うアプリを作成しているのですが、現在は登録した順に表示されるだけなのです日付でソートして表示を行いたいのですがソートは登録時にするべきしょうか?表示時にするべきでしょうか?
2
-
3
-
4
2
 
5
3
  ```
6
4
 
7
- package com.example.myscheduler
5
+
8
-
9
-
10
-
11
- import android.text.format.DateFormat
12
-
13
- import android.view.LayoutInflater
14
-
15
- import android.view.View
16
-
17
- import android.view.ViewGroup
18
-
19
- import android.widget.TextView
20
-
21
- import androidx.recyclerview.widget.RecyclerView
22
-
23
- import io.realm.OrderedRealmCollection
24
-
25
- import io.realm.RealmRecyclerViewAdapter
26
6
 
27
7
 
28
8
 
@@ -107,3 +87,191 @@
107
87
  }
108
88
 
109
89
  ```
90
+
91
+
92
+
93
+ ```kotlin
94
+
95
+
96
+
97
+ class ScheduleEditActivity : AppCompatActivity() {
98
+
99
+ private lateinit var realm: Realm
100
+
101
+
102
+
103
+ override fun onCreate(savedInstanceState: Bundle?) {
104
+
105
+ super.onCreate(savedInstanceState)
106
+
107
+ setContentView(R.layout.activity_schedule_edit)
108
+
109
+ realm = Realm.getDefaultInstance()
110
+
111
+
112
+
113
+ val scheduleId = intent?.getLongExtra("schedule_id", -1L) //schedule_Idを取得しscheduleIdに格納
114
+
115
+ if (scheduleId != -1L) { //取得出来ない場合-schedule_idが-1なので新規登録。それ以外は更新。
116
+
117
+ val schedule = realm.where<Schedule>()
118
+
119
+ .equalTo("id", scheduleId).findFirst()
120
+
121
+ dateEdit.setText(DateFormat.format("yyyy/MM/dd", schedule?.date))
122
+
123
+ titleEdit.setText(schedule?.title)
124
+
125
+ detailEdit.setText(schedule?.detail)
126
+
127
+ delete.visibility = View.VISIBLE
128
+
129
+ } else {
130
+
131
+ delete.visibility = View.INVISIBLE
132
+
133
+ }
134
+
135
+
136
+
137
+ ////////////////////////////////保存が押された時の処理/////////////////////////////////
138
+
139
+ save.setOnClickListener { view: View ->
140
+
141
+ when (scheduleId) {
142
+
143
+ -1L -> {
144
+
145
+ realm.executeTransaction { db: Realm ->
146
+
147
+ val maxId = db.where<Schedule>().max("id")
148
+
149
+ val nextId = (maxId?.toLong() ?: 0L) + 1
150
+
151
+ val schedule = db.createObject<Schedule>(nextId)
152
+
153
+ val date = dateEdit.text.toString().toDate("yyyy/MM/dd")
154
+
155
+ if (date != null) schedule.date = date
156
+
157
+ schedule.title = titleEdit.text.toString()
158
+
159
+ schedule.detail = detailEdit.text.toString()
160
+
161
+ }
162
+
163
+ Snackbar.make(view, "追加しました", Snackbar.LENGTH_INDEFINITE)
164
+
165
+ .setAction("戻る") { finish() }
166
+
167
+ .setActionTextColor(Color.YELLOW)
168
+
169
+ .show()
170
+
171
+ }
172
+
173
+ else -> {
174
+
175
+ realm.executeTransaction { db: Realm ->
176
+
177
+ val schedule = db.where<Schedule>()
178
+
179
+ .equalTo("id", scheduleId).findFirst()
180
+
181
+ val date = dateEdit.text.toString()
182
+
183
+ .toDate("yyyy/MM/dd")
184
+
185
+ if (date != null) schedule?.date = date
186
+
187
+ schedule?.title = titleEdit.text.toString()
188
+
189
+ schedule?.detail = detailEdit.text.toString()
190
+
191
+
192
+
193
+ }
194
+
195
+ ////////////////////////スナックバー表示処理////////////////////////////////
196
+
197
+ Snackbar.make(view, "修正しました", Snackbar.LENGTH_INDEFINITE)
198
+
199
+ .setAction("戻る") { finish() }
200
+
201
+ .setActionTextColor(Color.YELLOW)
202
+
203
+ .show()
204
+
205
+ }
206
+
207
+ }
208
+
209
+ }
210
+
211
+ /////////////削除ボタンが押された場合///////////////////////////
212
+
213
+ delete.setOnClickListener { view: View ->
214
+
215
+ realm.executeTransaction { db: Realm ->
216
+
217
+ db.where<Schedule>().equalTo("id", scheduleId)
218
+
219
+ ?.findFirst()
220
+
221
+ ?.deleteFromRealm()
222
+
223
+ }
224
+
225
+ ///////////////////////////スナックバー//////////////////////////
226
+
227
+ Snackbar.make(view, "削除しました", Snackbar.LENGTH_INDEFINITE)
228
+
229
+ .setAction("戻る") { finish() }
230
+
231
+ .setActionTextColor(Color.YELLOW)
232
+
233
+ .show()
234
+
235
+ }
236
+
237
+ }
238
+
239
+
240
+
241
+ override fun onDestroy() {
242
+
243
+ super.onDestroy()
244
+
245
+ realm.close()
246
+
247
+ }
248
+
249
+
250
+
251
+ //入力された値をDate型に変換
252
+
253
+ private fun String.toDate(pattern: String = "yyyy/MM/dd HH:mm"): Date? { //TextEditに入力された日付をData型に変換
254
+
255
+ return try {
256
+
257
+ SimpleDateFormat(pattern).parse(this)
258
+
259
+ } catch (e: IllegalArgumentException) {
260
+
261
+ return null
262
+
263
+ } catch (e: ParseException) {
264
+
265
+ return null
266
+
267
+ }
268
+
269
+ }
270
+
271
+ }
272
+
273
+
274
+
275
+ コード
276
+
277
+ ```