/** * 版权声明,说明该代码是MiCode开源社区的版权所有,并在Apache License 2.0下授权。 */ package net.micode.notes.ui; // 导入所需的Android库和自定义包 public class NotesListActivity extends Activity implements OnClickListener, OnItemLongClickListener { // 定义了一些查询操作的token,用于识别不同的后台查询操作 private static final int FOLDER_NOTE_LIST_QUERY_TOKEN = 0; private static final int FOLDER_LIST_QUERY_TOKEN = 1; // 定义了菜单项的ID private static final int MENU_FOLDER_DELETE = 0; private static final int MENU_FOLDER_VIEW = 1; private static final int MENU_FOLDER_CHANGE_NAME = 2; // 定义了用户首次使用应用时显示的介绍信息的SharedPreferences键 private static final String PREFERENCE_ADD_INTRODUCTION = "net.micode.notes.introduction"; // 枚举,定义了不同的列表编辑状态 private enum ListEditState { NOTE_LIST, SUB_FOLDER, CALL_RECORD_FOLDER }; // 类变量定义 private ListEditState mState; private BackgroundQueryHandler mBackgroundQueryHandler; private NotesListAdapter mNotesListAdapter; private ListView mNotesListView; private Button mAddNewNote; private boolean mDispatch; private int mOriginY; private int mDispatchY; private TextView mTitleBar; private long mCurrentFolderId; private ContentResolver mContentResolver; private ModeCallback mModeCallBack; private static final String TAG = "NotesListActivity"; private static final int NOTES_LISTVIEW_SCROLL_RATE = 30; private NoteItemData mFocusNoteDataItem; private static final String NORMAL_SELECTION = NoteColumns.PARENT_ID + "=?"; private static final String ROOT_FOLDER_SELECTION = "(" + NoteColumns.TYPE + "<>?" + Notes.TYPE_SYSTEM + " AND " + NoteColumns.PARENT_ID + "=?)" + " OR (" + NoteColumns.ID + "=" + Notes.ID_CALL_RECORD_FOLDER + " AND " + NoteColumns.NOTES_COUNT + ">0)"; private final static int REQUEST_CODE_OPEN_NODE = 102; private final static int REQUEST_CODE_NEW_NODE = 103; // onCreate方法,初始化Activity @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.note_list); initResources(); // 用户首次使用应用时,插入介绍信息 setAppInfoFromRawRes(); } // onActivityResult方法,处理其他Activity返回的结果 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // 省略了部分代码... } // setAppInfoFromRawRes方法,从raw资源中读取介绍信息并显示 private void setAppInfoFromRawRes() { // 省略了部分代码... } // onStart方法,Activity启动时开始异步查询笔记列表 @Override protected void onStart() { super.onStart(); startAsyncNotesListQuery(); } // initResources方法,初始化资源 private void initResources() { // 省略了部分代码... } // ModeCallback内部类,实现了ListView的MultiChoiceModeListener和OnMenuItemClickListener接口 private class ModeCallback implements ListView.MultiChoiceModeListener, OnMenuItemClickListener { // 省略了部分代码... } // NewNoteOnTouchListener内部类,处理“新建笔记”按钮的触摸事件 private class NewNoteOnTouchListener implements OnTouchListener { // 省略了部分代码... }; // startAsyncNotesListQuery方法,开始异步查询笔记列表 private void startAsyncNotesListQuery() { // 省略了部分代码... } // BackgroundQueryHandler内部类,继承自AsyncQueryHandler,处理异步查询完成的回调 private final class BackgroundQueryHandler extends AsyncQueryHandler { // 省略了部分代码... } // showFolderListMenu方法,显示文件夹列表菜单 private void showFolderListMenu(Cursor cursor) { // 省略了部分代码... } // createNewNote方法,创建新笔记 private void createNewNote() { // 省略了部分代码... } // batchDelete方法,批量删除笔记 private void batchDelete() { // 省略了部分代码... } // deleteFolder方法,删除文件夹 private void deleteFolder(long folderId) { // 省略了部分代码... } // openNode方法,打开笔记 private void openNode(NoteItemData data) { // 省略了部分代码... } // openFolder方法,打开文件夹 private void openFolder(NoteItemData data) { // 省略了部分代码... } // onClick方法,处理点击事件 public void onClick(View v) { // 省略了部分代码... } // showSoftInput方法,显示软键盘 private void showSoftInput() { // 省略了部分代码... } // hideSoftInput方法,隐藏软键盘 private void hideSoftInput(View view) { // 省略了部分代码... } // showCreateOrModifyFolderDialog方法,显示创建或修改文件夹的对话框 private void showCreateOrModifyFolderDialog(final boolean create) { // 省略了部分代码... } // onBackPressed方法,处理返回键事件 @Override public void onBackPressed() { // 省略了部分代码... } // updateWidget方法,更新Widget private void updateWidget(int appWidgetId, int appWidgetType) { // 省略了部分代码... } // mFolderOnCreateContextMenuListener变量,用于创建文件夹的上下文菜单 private final OnCreateContextMenuListener mFolderOnCreateContextMenuListener = new OnCreateContextMenuListener() { // 省略了部分代码... }; // onContextMenuClosed方法,上下文菜单关闭时的回调 @Override public void onContextMenuClosed(Menu menu) { // 省略了部分代码... } // onContextItemSelected方法,处理上下文菜单项的选中事件 @Override public boolean onContextItemSelected(MenuItem item) { // 省略了部分代码... } // onPrepareOptionsMenu方法,准备选项菜单 @Override public boolean onPrepareOptionsMenu(Menu menu) { // 省略了部分代码... } // onOptionsItemSelected方法,处理选项菜单项的点击事件 @Override public boolean onOptionsItemSelected(MenuItem item) { // 省略了部分代码... } // onSearchRequested方法,处理搜索请求 @Override public boolean onSearchRequested() { // 省略了部分代码... } // exportNoteToText方法,将笔记导出为文本 private void exportNoteToText() { // 省略了部分代码... } // isSyncMode方法,判断是否是同步模式 private boolean isSyncMode() { // 省略了部分代码... } // startPreferenceActivity方法,启动设置Activity private void startPreferenceActivity() { // 省略了部分代码... } // OnListItemClickListener内部类,实现了ListView的ItemClickListener接口 private class OnListItemClickListener implements OnItemClickListener { // 省略了部分代码... } // startQueryDestinationFolders方法,开始查询目标文件夹 private void startQueryDestinationFolders() { // 省略了部分代码... } // onItemLongClick方法,处理长按事件 public boolean onItemLongClick(AdapterView parent, View view, int position, long id) { } }