項目名
Name
Package name
Save location
Language
Minumum API level
This project will support instant apps
Use android.* artifacts
設定
number_TaskManager
com.number.taskmanager
自身の作業ディレクトリ
Kotlin
API 23: Android 6.0 (Marshmallow)
unchecked
checked (default)
タスクは管理用の「data class」を作成し、次の properties を用いること。必要に応じて properties を増やしても構わない。また、関数を追加しても構わない。ただし、『冗長的なデータ』を保持するために properties を追加してはならない。
タスクの「priority: 優先度」は、コード(Int 型のデータ)で管理すること。
タスクの「date: 日付」「time: 時間」は Date 型でまとめてもよい。(その際は入力チェックを行うこと)
次にあげる画面遷移時のタスクデータの受け渡し方法は、Task インスタンスを Intent に putExtra() してやりとりをすること。
一般的なタスク管理ツールは、同様のタスクが重複登録できる仕様になっているものが多い(重複を許している)。よってタスクは重複して登録できるものとする。
SharedPreferences への保存は「TaskManagerActivity(タスクを一覧表示している Activity)」で行うこと。
タスク一覧を表示させる TaskListAdapter(Adapter) は BaseAdapter を継承して作成すること。また、ViewHolder パターンで実装すること。
Task データは前述の「data class」インスタンスにて管理されているので、インスタンスを CSV 形式や XML 形式・JSON 形式に変換して String 型で保存すること。
SharedPreferences への保存例:<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map> <string name="tasks">[{"date":"1/1","detail":"data1","priority":2,"time":"12:00","title":"test1"},{…… 省略 ……},{…… 省略 ……},{…… 省略 ……},{…… 省略 ……}]</string></map>JSON 形式の例:[ { "date": "1/1", "detail": "data1", "priority": 2, "time": "12:00", "title": "test1" }, { "date": "1/24", "detail": "data2", "priority": 1, "time": "11:53", "title": "test2" }, { "date": "1/25", "detail": "data3", "priority": 0, "time": "12:00", "title": "test3" }, { "date": "2/22", "detail": "data4", "priority": 3, "time": "22:22", "title": "test4" }]表記例:「!!!」緊急: Immediately; 0「!!」(可及的)速やかに: ASAP (as soon as possible); 1「!」すぐに: Soon; 2「 」普通(いつでもよい): Anytime; 3Json 形式で保存することで、特に意識せず「タスクの重複登録」を行うことができる。しかしながら、重複しているタスクに「一意な識別子」をつけておかないと、タスクを削除するときに問題となる(「重複するタスクをすべて消してしまう」または「最初に検索されたタスクのみ消す」という偏った実装になりやすい)。これを回避するためには、参考資料にあるように「ID」を付与する考え方がわかりやすい。Activity の Constants には3つの RESULT(RESULT_CANCELED, RESULT_FIRST_USER, RESULT_OK) が定義されているそれぞれの RESULT をそれぞれ「キャンセル」「変更」「削除」に割り当てて実装してもよい。また、「変更」「削除」を RESULT_OK とし、「キャンセル」を RESULT_CANCELD と定義した上で、「変更処理なのか、削除処理なのか」を判断するための情報を返却して処理分岐する方法でもよい。SharedPreferences 内のテキストデータを部分的に更新するのは容易なことではない。簡単に実装するには、SharedPreferences に保存する前の List を操作するのが手っ取り早い。とはいえ、List 内の要素を更新する関数は用意されていないので、更新対象のデータを Delete insert する。