1. 程式人生 > >SortedList在神馬筆記中的應用

SortedList在神馬筆記中的應用

SortedList在神馬筆記中的應用

一、介面的層次結構

神馬筆記有5個介面用於展示筆記/資料夾內容,分別為

  1. 資料夾(相同資料夾內的筆記及子資料夾)
  2. 搜尋(同一關鍵子的筆記及資料夾)
  3. 最近專案(最近訪問的筆記,不包括資料夾)
  4. 最近刪除(最近刪除的筆記及資料夾)
  5. 標籤(同一標籤的筆記及資料夾)

筆記及資料夾在神馬筆記中統一稱為記錄,一條記錄即表示一條筆記或者一個資料夾。記錄支援5種排序方式,分別為:

  1. 名稱
  2. 建立日期
  3. 修改日期(僅用於最近專案)
  4. 大小
  5. 標籤

基於對筆記/資料夾排序的需求,使用SortedList作為記錄的容器再合適不過。我們只需要提供記錄的比較結果,`SortedList即可完成排序。

二、實現效果

三、程式碼層次結構

首先,存在5個具體的功能介面,定義5個具體的Fragment

  1. 資料夾(FolderRecordFragment)
  2. 搜尋(SearchRecordFragment)
  3. 最近專案(RecentRecordFragment)
  4. 最近刪除(TrashRecordFragment)
  5. 標籤(TagRecordFragment)

其次,5個具體的功能介面使用了2種不同的排序方式,為2種排序方式定義2個Fragment

  1. 名稱方式(NamedRecordListFragment):名稱、建立日期、大小、標籤
  2. 標籤方式(TabbedRecordListFragment):名稱、修改日期

再來,無論何種排序方式,都需要顯示筆記/資料夾的列表,定義基類的Fragment

  1. BaseRecordListFragment

最終的類層次結構為

BaseRecordListFragment

|---- NamedRecordListFragment

|    |---- FolderRecordFragment
|    |    |---- TrashRecordFragment
|    |---- SearchRecordFragment
|    |---- TagRecordFragment
|---- TabbedRecordListFragment
    |---- RecentRecordFragment

其中*RecordListFragment為抽象類,不能進行例項化。

四、職責定義

  • 核心功能

    1. BaseRecordListFragment

    多級資料夾管理的核心功能類,所有記錄的操作及顯示均由BaseRecordListFragment來完成,其重要程度及複雜度與編輯器的核心功能類ComposeArticleFragment不相上下。

  • 排序功能

    1. NamedRecordListFragment
    2. TabbedRecordListFragment

    這2個類提供了2種不同的排序方式,Named支援4種排序方式,Tabbed支援2種排序方式,並且排序的互動方式也不相同,故而定義2個不同的Fragment來實現。

  • 具體功能

    1. FolderRecordFragment
    2. SearchRecordFragment
    3. RecentRecordFragment
    4. TrashRecordFragment
    5. TagRecordFragment

    其中,Trash繼承自Folder,因為設計上Trash是一個特殊的資料夾,是Folder的一個特例,故而繼承之。這5個具體的類,為BaseRecordListFragment提供具體的資料,及響應BaseRecordListFragment的操作。

五、下載地址

神馬筆記最新版本:【whatsnote_lastest.apk