diff --git a/Notesmaster/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java b/Notesmaster/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java index 96b77da..9836f92 100644 --- a/Notesmaster/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java +++ b/Notesmaster/app/src/main/java/net/micode/notes/ui/FoldersListAdapter.java @@ -29,52 +29,97 @@ import net.micode.notes.data.Notes; import net.micode.notes.data.Notes.NoteColumns; +/** + * 文件夹列表适配器,用于在ListView等控件中展示文件夹列表 + */ public class FoldersListAdapter extends CursorAdapter { + // 查询文件夹数据时使用的列投影,指定需要查询的数据库列 public static final String [] PROJECTION = { - NoteColumns.ID, - NoteColumns.SNIPPET + NoteColumns.ID, // 文件夹ID + NoteColumns.SNIPPET // 文件夹名称(摘要) }; - public static final int ID_COLUMN = 0; - public static final int NAME_COLUMN = 1; + // 列索引常量,方便后续代码引用 + public static final int ID_COLUMN = 0; // ID列的索引 + public static final int NAME_COLUMN = 1; // 名称列的索引 + /** + * 构造函数 + * @param context 上下文对象 + * @param c 包含文件夹数据的Cursor对象 + */ public FoldersListAdapter(Context context, Cursor c) { super(context, c); // TODO Auto-generated constructor stub } + /** + * 创建新的列表项视图 + * @param context 上下文对象 + * @param cursor 当前位置的数据游标 + * @param parent 父视图 + * @return 新创建的视图 + */ @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { + // 创建自定义的文件夹列表项视图 return new FolderListItem(context); } + /** + * 将数据绑定到已有的视图上 + * @param view 要绑定数据的视图 + * @param context 上下文对象 + * @param cursor 当前位置的数据游标 + */ @Override 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); } } + /** + * 获取指定位置的文件夹名称 + * @param context 上下文对象 + * @param position 列表位置 + * @return 文件夹名称 + */ 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); } + /** + * 自定义的文件夹列表项视图 + */ private class FolderListItem extends LinearLayout { - private TextView mName; + private TextView mName; // 文件夹名称显示文本视图 + /** + * 构造函数 + * @param context 上下文对象 + */ public FolderListItem(Context context) { super(context); + // 加载布局文件 inflate(context, R.layout.folder_list_item, this); + // 获取文件夹名称文本视图引用 mName = (TextView) findViewById(R.id.tv_folder_name); } + /** + * 将文件夹名称绑定到视图上 + * @param name 文件夹名称 + */ public void bind(String name) { mName.setText(name); } } - -} +} \ No newline at end of file