SortedList在神馬筆記中的應用
SortedList在神馬筆記中的應用
一、介面的層次結構
神馬筆記有5個介面用於展示筆記/資料夾內容,分別為
- 資料夾(相同資料夾內的筆記及子資料夾)
- 搜尋(同一關鍵子的筆記及資料夾)
- 最近專案(最近訪問的筆記,不包括資料夾)
- 最近刪除(最近刪除的筆記及資料夾)
- 標籤(同一標籤的筆記及資料夾)
筆記及資料夾在神馬筆記中統一稱為記錄,一條記錄即表示一條筆記或者一個資料夾。記錄支援5種排序方式,分別為:
- 名稱
- 建立日期
- 修改日期(僅用於最近專案)
- 大小
- 標籤
基於對筆記/資料夾排序的需求,使用SortedList
作為記錄的容器再合適不過。我們只需要提供記錄的比較結果,`SortedList即可完成排序。
二、實現效果
三、程式碼層次結構
首先,存在5個具體的功能介面,定義5個具體的Fragment
- 資料夾(FolderRecordFragment)
- 搜尋(SearchRecordFragment)
- 最近專案(RecentRecordFragment)
- 最近刪除(TrashRecordFragment)
- 標籤(TagRecordFragment)
其次,5個具體的功能介面使用了2種不同的排序方式,為2種排序方式定義2個Fragment
- 名稱方式(NamedRecordListFragment):名稱、建立日期、大小、標籤
- 標籤方式(TabbedRecordListFragment):名稱、修改日期
再來,無論何種排序方式,都需要顯示筆記/資料夾的列表,定義基類的Fragment
- BaseRecordListFragment
最終的類層次結構為
BaseRecordListFragment
|---- NamedRecordListFragment
| |---- FolderRecordFragment
| | |---- TrashRecordFragment
| |---- SearchRecordFragment
| |---- TagRecordFragment
|---- TabbedRecordListFragment
|---- RecentRecordFragment
其中*RecordListFragment
為抽象類,不能進行例項化。
四、職責定義
-
核心功能
- BaseRecordListFragment
多級資料夾管理的核心功能類,所有記錄的操作及顯示均由BaseRecordListFragment來完成,其重要程度及複雜度與編輯器的核心功能類
ComposeArticleFragment
不相上下。 -
排序功能
- NamedRecordListFragment
- TabbedRecordListFragment
這2個類提供了2種不同的排序方式,Named支援4種排序方式,Tabbed支援2種排序方式,並且排序的互動方式也不相同,故而定義2個不同的Fragment來實現。
-
具體功能
- FolderRecordFragment
- SearchRecordFragment
- RecentRecordFragment
- TrashRecordFragment
- TagRecordFragment
其中,Trash繼承自Folder,因為設計上Trash是一個特殊的資料夾,是Folder的一個特例,故而繼承之。這5個具體的類,為BaseRecordListFragment提供具體的資料,及響應BaseRecordListFragment的操作。
五、下載地址
神馬筆記最新版本:【whatsnote_lastest.apk】