diff --git a/NotesListActivity.java b/NotesListActivity.java index fe592fa..13f669c 100644 --- a/NotesListActivity.java +++ b/NotesListActivity.java @@ -370,66 +370,86 @@ private class ModeCallback implements ListView.MultiChoiceModeListener, OnMenuIt } - public boolean onPrepareActionMode(ActionMode mode, Menu menu) { - // TODO Auto-generated method stub - return false; - } +// 这是ActionMode.Callback接口的实现,用于处理上下文操作模式(Contextual Action Mode)中的各种事件。 - public boolean onActionItemClicked(ActionMode mode, MenuItem item) { - // TODO Auto-generated method stub - return false; - } +// 当准备ActionMode时调用此方法,可以在此方法中初始化菜单。 +public boolean onPrepareActionMode(ActionMode mode, Menu menu) { + // 该方法目前未实现具体功能,返回false表示不处理菜单。 + return false; +} - public void onDestroyActionMode(ActionMode mode) { - mNotesListAdapter.setChoiceMode(false); - mNotesListView.setLongClickable(true); - mAddNewNote.setVisibility(View.VISIBLE); - } +// 当ActionMode中的菜单项被点击时调用此方法。 +public boolean onActionItemClicked(ActionMode mode, MenuItem item) { + // 该方法目前未实现具体功能,返回false表示不处理点击事件。 + return false; +} - public void finishActionMode() { - mActionMode.finish(); - } +// 当ActionMode结束时调用此方法,可以进行清理工作。 +public void onDestroyActionMode(ActionMode mode) { + // 关闭列表适配器的选择模式。 + mNotesListAdapter.setChoiceMode(false); + // 设置列表视图可长按。 + mNotesListView.setLongClickable(true); + // 显示添加新笔记的视图。 + mAddNewNote.setVisibility(View.VISIBLE); +} - public void onItemCheckedStateChanged(ActionMode mode, int position, long id, - boolean checked) { - mNotesListAdapter.setCheckedItem(position, checked); - updateMenu(); - } +// 结束当前的ActionMode。 +public void finishActionMode() { + // 调用ActionMode的finish方法来结束模式。 + mActionMode.finish(); +} - public boolean onMenuItemClick(MenuItem item) { - if (mNotesListAdapter.getSelectedCount() == 0) { - Toast.makeText(NotesListActivity.this, getString(R.string.menu_select_none), - Toast.LENGTH_SHORT).show(); - return true; - } +// 当列表项的选中状态改变时调用此方法。 +public void onItemCheckedStateChanged(ActionMode mode, int position, long id, + boolean checked) { + // 更新列表适配器中指定位置的选中状态。 + mNotesListAdapter.setCheckedItem(position, checked); + // 更新菜单。 + updateMenu(); +} - switch (item.getItemId()) { - case R.id.delete: - AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); - builder.setTitle(getString(R.string.alert_title_delete)); - builder.setIcon(android.R.drawable.ic_dialog_alert); - builder.setMessage(getString(R.string.alert_message_delete_notes, - mNotesListAdapter.getSelectedCount())); - builder.setPositiveButton(android.R.string.ok, - new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, - int which) { - batchDelete(); - } - }); - builder.setNegativeButton(android.R.string.cancel, null); - builder.show(); - break; - case R.id.move: - startQueryDestinationFolders(); - break; - default: - return false; - } - return true; - } +// 当菜单项被点击时调用此方法。 +public boolean onMenuItemClick(MenuItem item) { + // 如果没有选中任何项,显示提示信息并返回true表示已处理点击事件。 + if (mNotesListAdapter.getSelectedCount() == 0) { + Toast.makeText(NotesListActivity.this, getString(R.string.menu_select_none), + Toast.LENGTH_SHORT).show(); + return true; } + // 根据菜单项的ID处理不同的点击事件。 + switch (item.getItemId()) { + case R.id.delete: + // 构建一个对话框,提示用户是否删除选中的笔记。 + AlertDialog.Builder builder = new AlertDialog.Builder(NotesListActivity.this); + builder.setTitle(getString(R.string.alert_title_delete)); + builder.setIcon(android.R.drawable.ic_dialog_alert); + builder.setMessage(getString(R.string.alert_message_delete_notes, + mNotesListAdapter.getSelectedCount())); + builder.setPositiveButton(android.R.string.ok, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + // 如果用户确认删除,则调用批量删除方法。 + batchDelete(); + } + }); + builder.setNegativeButton(android.R.string.cancel, null); + builder.show(); + break; + case R.id.move: + // 启动查询目标文件夹的操作。 + startQueryDestinationFolders(); + break; + default: + // 如果不是已知的菜单项,返回false表示未处理点击事件。 + return false; + } + // 返回true表示已处理点击事件。 + return true; +} +} private class NewNoteOnTouchListener implements OnTouchListener { public boolean onTouch(View v, MotionEvent event) {