From 1b7d196fe67b38beaa410b0f19bf337bbfbf8e90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8C=85=E5=B0=94=E4=BF=8A?= Date: Sat, 31 Jan 2026 09:36:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86title=E5=92=8Csnippe?= =?UTF-8?q?t=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | Bin 403 -> 355 bytes .../micode/notes/data/NotesRepository.java | 2 + .../net/micode/notes/model/WorkingNote.java | 6 +-- .../micode/notes/ui/FoldersListAdapter.java | 36 ++++++++++++++---- .../notes/viewmodel/FolderListViewModel.java | 12 +++++- .../notes/widget/NoteWidgetProvider.java | 10 ++++- 6 files changed, 52 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 4ffcb90b8d4bfbdb9402913a26d1231163210b97..e04af4babb72bfebffd52f3887421b972e938e6f 100644 GIT binary patch literal 355 zcmZWlyG{f#4D9_CNOTm=H}E*oEyW^HB5z_H;j&5OWRDfqbx24E(NG{7pobsecXq#n zXb*HN(T!*9@z@7wTL-ulGLAvHpvhsB5LvS21PZNTQkwMDu5z{!l9}8F(>YGq7q8!m zn;@$cN%Nfav|bpSgUm@viSvcMB{4PUZ2fX;geUc7U3yEbrnAmKNfC1=B?oe!SvdQEh-y0|B!p-v5Dn171-MRf z4jeW}S<%>UK9Ao#`v6U4rNE^pZCQ%UIz<*6?;7^ea7YM^X37+)t66DH>B-LWqbhPRIi4fmVj^{an)=|A74 zI6PhC=LJ@2=>FbW!}YP#DF~+jsa2Ah6n_%0gR5spSdv<`jT8YqD99iO2N4(oR6uDR OwNG3pu2P+W1OY!5GlpOQ diff --git a/src/Notesmaster/app/src/main/java/net/micode/notes/data/NotesRepository.java b/src/Notesmaster/app/src/main/java/net/micode/notes/data/NotesRepository.java index 9bd4d1a..593434b 100644 --- a/src/Notesmaster/app/src/main/java/net/micode/notes/data/NotesRepository.java +++ b/src/Notesmaster/app/src/main/java/net/micode/notes/data/NotesRepository.java @@ -1068,6 +1068,8 @@ public class NotesRepository { } ContentValues values = new ContentValues(); + // 同时更新 TITLE 和 SNIPPET,保持一致性 + values.put(NoteColumns.TITLE, newName); values.put(NoteColumns.SNIPPET, newName); values.put(NoteColumns.LOCAL_MODIFIED, 1); diff --git a/src/Notesmaster/app/src/main/java/net/micode/notes/model/WorkingNote.java b/src/Notesmaster/app/src/main/java/net/micode/notes/model/WorkingNote.java index 5ec9caa..74b9f73 100644 --- a/src/Notesmaster/app/src/main/java/net/micode/notes/model/WorkingNote.java +++ b/src/Notesmaster/app/src/main/java/net/micode/notes/model/WorkingNote.java @@ -433,10 +433,8 @@ public class WorkingNote { public void setTitle(String title) { mTitle = title; mNote.setNoteValue(NoteColumns.TITLE, mTitle); - // 对于文件夹类型,同时设置 snippet 字段以保持兼容性 - if (mType == Notes.TYPE_FOLDER) { - mNote.setNoteValue(NoteColumns.SNIPPET, mTitle); - } + // 同步设置SNIPPET字段以保持兼容性 + mNote.setNoteValue(NoteColumns.SNIPPET, mTitle); } public String getTitle() { diff --git a/src/Notesmaster/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java b/src/Notesmaster/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java index 7176cf9..ab51d83 100644 --- a/src/Notesmaster/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java +++ b/src/Notesmaster/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java @@ -49,12 +49,14 @@ public class FoldersListAdapter extends CursorAdapter { // 数据库查询投影,指定需要从笔记表中获取的列 public static final String [] PROJECTION = { NoteColumns.ID, - NoteColumns.SNIPPET + NoteColumns.SNIPPET, + NoteColumns.TITLE }; // 列索引常量,用于从查询结果中获取对应列的数据 public static final int ID_COLUMN = 0; - public static final int NAME_COLUMN = 1; + public static final int SNIPPET_COLUMN = 1; + public static final int TITLE_COLUMN = 2; /** * 构造器 @@ -96,9 +98,19 @@ public class FoldersListAdapter extends CursorAdapter { public void bindView(View view, Context context, Cursor cursor) { if (view instanceof FolderListItem) { // 如果是根文件夹,显示特殊文本;否则显示文件夹名称 - String folderName = (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context - .getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN); - ((FolderListItem) view).bind(folderName); + if (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) { + ((FolderListItem) view).bind(context.getString(R.string.menu_move_parent_folder)); + } else { + // 优先使用TITLE,fallback到SNIPPET + String folderName = ""; + if (cursor.getColumnCount() > TITLE_COLUMN) { + folderName = cursor.getString(TITLE_COLUMN); + } + if (folderName == null || folderName.trim().isEmpty()) { + folderName = cursor.getString(SNIPPET_COLUMN); + } + ((FolderListItem) view).bind(folderName); + } } } @@ -111,8 +123,18 @@ public class FoldersListAdapter extends CursorAdapter { */ public String getFolderName(Context context, int position) { Cursor cursor = (Cursor) getItem(position); - return (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) ? context - .getString(R.string.menu_move_parent_folder) : cursor.getString(NAME_COLUMN); + if (cursor.getLong(ID_COLUMN) == Notes.ID_ROOT_FOLDER) { + return context.getString(R.string.menu_move_parent_folder); + } + // 优先使用TITLE,fallback到SNIPPET + String folderName = ""; + if (cursor.getColumnCount() > TITLE_COLUMN) { + folderName = cursor.getString(TITLE_COLUMN); + } + if (folderName == null || folderName.trim().isEmpty()) { + folderName = cursor.getString(SNIPPET_COLUMN); + } + return folderName; } /** diff --git a/src/Notesmaster/app/src/main/java/net/micode/notes/viewmodel/FolderListViewModel.java b/src/Notesmaster/app/src/main/java/net/micode/notes/viewmodel/FolderListViewModel.java index d93e02d..494543c 100644 --- a/src/Notesmaster/app/src/main/java/net/micode/notes/viewmodel/FolderListViewModel.java +++ b/src/Notesmaster/app/src/main/java/net/micode/notes/viewmodel/FolderListViewModel.java @@ -246,7 +246,16 @@ public class FolderListViewModel extends AndroidViewModel { while (cursor.moveToNext()) { Map folder = new HashMap<>(); long id = cursor.getLong(cursor.getColumnIndexOrThrow(NoteColumns.ID)); - String name = cursor.getString(cursor.getColumnIndexOrThrow(NoteColumns.SNIPPET)); + + // 优先使用TITLE,fallback到SNIPPET + String name = ""; + int titleIndex = cursor.getColumnIndex(NoteColumns.TITLE); + if (titleIndex != -1) { + name = cursor.getString(titleIndex); + } + if (name == null || name.trim().isEmpty()) { + name = cursor.getString(cursor.getColumnIndexOrThrow(NoteColumns.SNIPPET)); + } // 尝试获取parent_id,可能列名不对 int parentIdIndex = cursor.getColumnIndex(NoteColumns.PARENT_ID); @@ -265,6 +274,7 @@ public class FolderListViewModel extends AndroidViewModel { android.util.Log.d(TAG, "Folder data: id=" + id + ", name=" + name + ", parentId=" + parentId + ", noteCount=" + noteCount); folder.put(NoteColumns.ID, id); + folder.put(NoteColumns.TITLE, name); folder.put(NoteColumns.SNIPPET, name); folder.put(NoteColumns.PARENT_ID, parentId); folder.put(NoteColumns.NOTES_COUNT, noteCount); diff --git a/src/Notesmaster/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java b/src/Notesmaster/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java index ec6f819..3a88905 100644 --- a/src/Notesmaster/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java +++ b/src/Notesmaster/app/src/main/java/net/micode/notes/widget/NoteWidgetProvider.java @@ -36,12 +36,14 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider { public static final String [] PROJECTION = new String [] { NoteColumns.ID, NoteColumns.BG_COLOR_ID, - NoteColumns.SNIPPET + NoteColumns.SNIPPET, + NoteColumns.TITLE }; public static final int COLUMN_ID = 0; public static final int COLUMN_BG_COLOR_ID = 1; public static final int COLUMN_SNIPPET = 2; + public static final int COLUMN_TITLE = 3; private static final String TAG = "NoteWidgetProvider"; @@ -87,7 +89,11 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider { c.close(); return; } - snippet = c.getString(COLUMN_SNIPPET); + // 优先使用TITLE,fallback到SNIPPET + snippet = c.getColumnCount() > COLUMN_TITLE ? c.getString(COLUMN_TITLE) : ""; + if (snippet == null || snippet.trim().isEmpty()) { + snippet = c.getString(COLUMN_SNIPPET); + } bgId = c.getInt(COLUMN_BG_COLOR_ID); intent.putExtra(Intent.EXTRA_UID, c.getLong(COLUMN_ID)); intent.setAction(Intent.ACTION_VIEW);