@ -392,6 +401,11 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
}
pinMenu.setOnMenuItemClickListener(this);
}
// 添加标签设置菜单项
MenuItemtagsMenu=menu.findItem(R.id.tags);
if(tagsMenu!=null){
tagsMenu.setOnMenuItemClickListener(this);
}
mActionMode=mode;
mNotesListAdapter.setChoiceMode(true);
mNotesListView.setLongClickable(false);
@ -483,6 +497,8 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
startQueryDestinationFolders();
}elseif(item.getItemId()==R.id.pin){
togglePinStatus();
}elseif(item.getItemId()==R.id.tags){
showTagsDialog();
}else{
returnfalse;
}
@ -552,39 +568,93 @@ public class NotesListActivity extends Activity implements OnClickListener, OnIt
};
// 当前选中的标签,用于筛选
privateStringmSelectedTag="";
privatevoidstartAsyncNotesListQuery(){
Stringselection;
String[]selectionArgs;
// 构建基础查询条件
StringbaseSelection="";
ArrayList<String>argsList=newArrayList<>();
// 根据是否有搜索关键词构建不同的查询条件
if(!TextUtils.isEmpty(mSearchQuery)){
// 有搜索关键词的情况
if(mCurrentFolderId==Notes.ID_ROOT_FOLDER){
// 根文件夹:需要将搜索条件应用到两个部分
selection ="(("+NoteColumns.TYPE+"<>"+Notes.TYPE_SYSTEM+" AND "+NoteColumns.PARENT_ID+"=? AND ("+NoteColumns.TITLE+" LIKE ? OR "+NoteColumns.SNIPPET+" LIKE ?))"
+" OR ("+NoteColumns.ID+"="+Notes.ID_CALL_RECORD_FOLDER+" AND "+NoteColumns.NOTES_COUNT+">0 AND ("+NoteColumns.TITLE+" LIKE ? OR "+NoteColumns.SNIPPET+" LIKE ?)))";
selectionArgs =newString[]{
String.valueOf(mCurrentFolderId),
"%"+mSearchQuery+"%",
"%"+mSearchQuery+"%",
"%"+mSearchQuery+"%",
"%"+mSearchQuery+"%"
};
baseSelection ="(("+NoteColumns.TYPE+"<>"+Notes.TYPE_SYSTEM+" AND "+NoteColumns.PARENT_ID+"=? AND ("+NoteColumns.TITLE+" LIKE ? OR "+NoteColumns.SNIPPET+" LIKE ? OR "+NoteColumns.TAGS+" LIKE ?))"
+" OR ("+NoteColumns.ID+"="+Notes.ID_CALL_RECORD_FOLDER+" AND "+NoteColumns.NOTES_COUNT+">0 AND ("+NoteColumns.TITLE+" LIKE ? OR "+NoteColumns.SNIPPET+" LIKE ? OR " +NoteColumns.TAGS+" LIKE ?)))";
argsList.add(String.valueOf(mCurrentFolderId));
argsList.add("%"+mSearchQuery+"%");
argsList.add("%"+mSearchQuery+"%");
argsList.add("%"+mSearchQuery+"%");
argsList.add("%"+mSearchQuery+"%");
argsList.add("%"+mSearchQuery+"%");
argsList.add("%"+mSearchQuery+"%");
}else{
// 普通文件夹
selection=NORMAL_SELECTION+" AND ("+NoteColumns.TITLE+" LIKE ? OR "+NoteColumns.SNIPPET+" LIKE ?)";
selectionArgs=newString[]{
String.valueOf(mCurrentFolderId),
"%"+mSearchQuery+"%",
"%"+mSearchQuery+"%"
};
baseSelection=NORMAL_SELECTION+" AND ("+NoteColumns.TITLE+" LIKE ? OR "+NoteColumns.SNIPPET+" LIKE ? OR "+NoteColumns.TAGS+" LIKE ?)";
StringtagCondition=" AND "+NoteColumns.TAGS+" LIKE ?";
// 根据是否有搜索关键词构建不同的标签筛选条件
if(!TextUtils.isEmpty(mSearchQuery)){
// 有搜索关键词的情况
baseSelection="(("+NoteColumns.TYPE+"<>"+Notes.TYPE_SYSTEM+" AND "+NoteColumns.PARENT_ID+"=? AND ("+NoteColumns.TITLE+" LIKE ? OR "+NoteColumns.SNIPPET+" LIKE ? OR "+NoteColumns.TAGS+" LIKE ?)"+tagCondition+")"
+" OR ("+NoteColumns.ID+"="+Notes.ID_CALL_RECORD_FOLDER+" AND "+NoteColumns.NOTES_COUNT+">0 AND ("+NoteColumns.TITLE+" LIKE ? OR "+NoteColumns.SNIPPET+" LIKE ? OR "+NoteColumns.TAGS+" LIKE ?)"+tagCondition+"))";
// 重新构建参数列表
argsList.clear();
argsList.add(String.valueOf(mCurrentFolderId));
argsList.add("%"+mSearchQuery+"%");
argsList.add("%"+mSearchQuery+"%");
argsList.add("%"+mSearchQuery+"%");
argsList.add("%"+mSelectedTag+"%");
argsList.add("%"+mSearchQuery+"%");
argsList.add("%"+mSearchQuery+"%");
argsList.add("%"+mSearchQuery+"%");
argsList.add("%"+mSelectedTag+"%");
}else{
// 没有搜索关键词的情况
baseSelection="(("+NoteColumns.TYPE+"<>"+Notes.TYPE_SYSTEM+" AND "+NoteColumns.PARENT_ID+"=?"+tagCondition+")"
+" OR ("+NoteColumns.ID+"="+Notes.ID_CALL_RECORD_FOLDER+" AND "+NoteColumns.NOTES_COUNT+">0"+tagCondition+"))";
// 重新构建参数列表
argsList.clear();
argsList.add(String.valueOf(mCurrentFolderId));
argsList.add("%"+mSelectedTag+"%");
argsList.add("%"+mSelectedTag+"%");
}
}else{
// 普通文件夹
if(baseSelection.contains("AND")){
baseSelection+=" AND "+NoteColumns.TAGS+" LIKE ?";
}else{
baseSelection+=" WHERE "+NoteColumns.TAGS+" LIKE ?";