Translate

BTemplates.com

Powered by Blogger.

2018年2月17日土曜日

2018-02-17 到達点メモ


*Kotlinで開発しています

今日はインストール日時と最終アップデートの日時の取得と
並び替えの機能を実装した。

val dataList = mutableListOf<ListItem>()

for (appInfo in appInfoList) {
//無関係部分を一部省略
     var data:ListItem = ListItem()
     val pkgInfo:PackageInfo = packageManager.getPackageInfo(appInfo.packageName,PackageManager.GET_META_DATA)
     data.installTime = pkgInfo.firstInstallTime
     data.lastUpdateTime = pkgInfo.lastUpdateTime
     dataList.add(data)
}

インストール日時と最終アップデート日時は、
ApplicationInfo(コード上ではappInfoを指す)から直接取ることができないので
PackageInfoでApplicationInfoでpackageNameを使ってアプリを特定し
そこから、firstInstallTimeとlastUpdateTimeを使ってそれぞれデータを取得する。
なお、返り値はLong型である。

参考サイト:アプリのサイズとインストール日を調べる方法
参考サイト:Android インストール日時、アップデート日時取得
参考サイト:アプリケーションのインストール日時、更新日時を取得する


並び替えに至っては思っていた以上に簡単だった
自分の場合は、ListItemを定義したファイルに以下のように書いた

internal class NameComparator : Comparator<ListItem> {
    override fun compare(lhs: ListItem, rhs: ListItem): Int {
        return lhs.label!!.compareTo(rhs.label!!)
    }
}

そしてMainActivityで以下のように実装。

Collections.sort(dataList, LastUpdateTimeComparator())
val adapter = ImageArrayAdapter(applicationContext, R.layout.list_view_image_item, dataList)

これで実装完了である。
少し注意する点があるとすれば,
昇順でなく降順に設定したい場合は以下のように書き換えればよい

internal class NameComparator : Comparator<ListItem> {
    override fun compare(lhs: ListItem, rhs: ListItem): Int {
        return rhs.label!!.compareTo(lhs.label!!)
    }
}

参考サイト:ListView内のアイテムの並び替え
参考サイト:【Java入門】compareToで大小を比較をする方法総まとめ(文字列/日付)

調子がいいので、そのままスピナーの並び替えも実装。
引数を取るようにし、引数によって昇順、降順の並び替えを変更。
で、色々やった結果が下の画像です。


  

正直、調べたら普通にできたので特に書きたい事は無い。
ただ個人的に思ったのがプログラム的にどうこうではないが
古いインストール順と古いアップデートはいらないということと
場合によっては、ツールバーのアイコンにどうさせる必要があるかもしれない。

参考サイト:Androidアプリ開発でSpinnerを追加する方法【初心者向け】
参考サイト:スピナー(Spinner)を使用するには
参考サイト:スピナー(公式ドキュメント)
参考サイト:Resourcesクラスを使ったリソースの参照

ついでにListViewの項目をタップすると
スケジュール画面に遷移するように設定。

参考サイト:ListViewにクリックイベントを追加してみよう

きりが良いので今日はここまで。

0 コメント:

コメントを投稿