/** * 文件夹列表适配器,用于显示和管理文件夹列表项。 */ public class FoldersListAdapter extends CursorAdapter { // 投影数组,用于查询数据库时指定需要哪些列 public static final String [] PROJECTION = { NoteColumns.ID, NoteColumns.SNIPPET }; // 列索引常量 public static final int ID_COLUMN = 0; public static final int NAME_COLUMN = 1; /** * 构造函数。 * @param context 上下文对象,提供应用环境信息。 * @param c 数据库游标,包含文件夹数据。 */ public FoldersListAdapter(Context context, Cursor c) { super(context, c); } /** * 创建新的列表项视图。 * @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; /** * 构造函数。 * @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); } } }