From eb8b68abade239a784eecb88263cb202575e1918 Mon Sep 17 00:00:00 2001 From: p6zpjanrb <1157949412@qq.com> Date: Fri, 19 Jan 2024 09:28:50 +0800 Subject: [PATCH] Update NotesListItem.java --- src/net/micode/notes/ui/NotesListItem.java | 116 +++++++++++---------- 1 file changed, 63 insertions(+), 53 deletions(-) diff --git a/src/net/micode/notes/ui/NotesListItem.java b/src/net/micode/notes/ui/NotesListItem.java index 1221e80..41a1e13 100644 --- a/src/net/micode/notes/ui/NotesListItem.java +++ b/src/net/micode/notes/ui/NotesListItem.java @@ -28,95 +28,105 @@ import net.micode.notes.R; import net.micode.notes.data.Notes; import net.micode.notes.tool.DataUtils; import net.micode.notes.tool.ResourceParser.NoteItemBgResources; +/* +这是一个自定义的 NotesListItem 类,继承自 LinearLayout,用于显示笔记列表中的每一项笔记或文件夹。该类的主要功能是将笔记数据绑定到对应的视图上,并处理选择模式和多选框的显示逻辑。 - +注释内容为对类中各个成员变量和方法的说明。 +*/ public class NotesListItem extends LinearLayout { - private ImageView mAlert; - private TextView mTitle; - private TextView mTime; - private TextView mCallName; - private NoteItemData mItemData; - private CheckBox mCheckBox; + private ImageView mAlert; // 提醒图标 + private TextView mTitle; // 标题 + private TextView mTime; // 时间 + private TextView mCallName; // 通话名称 + private NoteItemData mItemData; // 笔记项数据 + private CheckBox mCheckBox; // 多选框 public NotesListItem(Context context) { super(context); - inflate(context, R.layout.note_item, this); - mAlert = (ImageView) findViewById(R.id.iv_alert_icon); - mTitle = (TextView) findViewById(R.id.tv_title); - mTime = (TextView) findViewById(R.id.tv_time); - mCallName = (TextView) findViewById(R.id.tv_name); - mCheckBox = (CheckBox) findViewById(android.R.id.checkbox); + inflate(context, R.layout.note_item, this); // 填充视图 + mAlert = (ImageView) findViewById(R.id.iv_alert_icon); // 初始化提醒图标 + mTitle = (TextView) findViewById(R.id.tv_title); // 初始化标题 + mTime = (TextView) findViewById(R.id.tv_time); // 初始化时间 + mCallName = (TextView) findViewById(R.id.tv_name); // 初始化通话名称 + mCheckBox = (CheckBox) findViewById(android.R.id.checkbox); // 初始化多选框 } + // 绑定数据到视图 public void bind(Context context, NoteItemData data, boolean choiceMode, boolean checked) { + // 如果是多选模式,并且数据类型是笔记类型,显示多选框并设置选中状态 if (choiceMode && data.getType() == Notes.TYPE_NOTE) { mCheckBox.setVisibility(View.VISIBLE); mCheckBox.setChecked(checked); - } else { + } else { // 否则隐藏多选框 mCheckBox.setVisibility(View.GONE); } - mItemData = data; - if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { - mCallName.setVisibility(View.GONE); - mAlert.setVisibility(View.VISIBLE); + mItemData = data; // 保存数据项 + + if (data.getId() == Notes.ID_CALL_RECORD_FOLDER) { // 如果是通话记录文件夹 + mCallName.setVisibility(View.GONE); // 隐藏通话名称 + mAlert.setVisibility(View.VISIBLE); // 显示提醒图标 mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); + // 设置标题文本为通话记录文件夹的名称和包含的文件数 mTitle.setText(context.getString(R.string.call_record_folder_name) + context.getString(R.string.format_folder_files_count, data.getNotesCount())); - mAlert.setImageResource(R.drawable.call_record); - } else if (data.getParentId() == Notes.ID_CALL_RECORD_FOLDER) { - mCallName.setVisibility(View.VISIBLE); - mCallName.setText(data.getCallName()); - mTitle.setTextAppearance(context,R.style.TextAppearanceSecondaryItem); - mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); - if (data.hasAlert()) { - mAlert.setImageResource(R.drawable.clock); - mAlert.setVisibility(View.VISIBLE); + mAlert.setImageResource(R.drawable.call_record); // 设置提醒图标为通话记录图标 + } else if (data.getParentId() == Notes.ID_CALL_RECORD_FOLDER) { // 如果父文件夹是通话记录文件夹 + mCallName.setVisibility(View.VISIBLE); // 显示通话名称 + mCallName.setText(data.getCallName()); // 设置通话名称 + mTitle.setTextAppearance(context, R.style.TextAppearanceSecondaryItem);// 设置标题文本样式为次要文本样式 + mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); // 设置标题文本为格式化的说明文本 + if (data.hasAlert()) { // 如果有提醒 + mAlert.setImageResource(R.drawable.clock); // 设置提醒图标为闹钟图标 + mAlert.setVisibility(View.VISIBLE); // 显示提醒图标 } else { - mAlert.setVisibility(View.GONE); + mAlert.setVisibility(View.GONE); // 隐藏提醒图标 } - } else { - mCallName.setVisibility(View.GONE); - mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem); + } else { // 其他类型的笔记项 + mCallName.setVisibility(View.GONE); // 隐藏通话名称 + mTitle.setTextAppearance(context, R.style.TextAppearancePrimaryItem);// 设置标题文本样式为主要文本样式 - if (data.getType() == Notes.TYPE_FOLDER) { + if (data.getType() == Notes.TYPE_FOLDER) { // 如果是文件夹类型 + // 设置标题文本为文件夹名称和包含的文件数 mTitle.setText(data.getSnippet() + context.getString(R.string.format_folder_files_count, data.getNotesCount())); - mAlert.setVisibility(View.GONE); - } else { - mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); - if (data.hasAlert()) { - mAlert.setImageResource(R.drawable.clock); - mAlert.setVisibility(View.VISIBLE); + mAlert.setVisibility(View.GONE); // 隐藏提醒图标 + } else { // 如果是笔记类型 + mTitle.setText(DataUtils.getFormattedSnippet(data.getSnippet())); // 设置标题文本为格式化的说明文本 + if (data.hasAlert()) { // 如果有提醒 + mAlert.setImageResource(R.drawable.clock); // 设置提醒图标为闹钟图标 + mAlert.setVisibility(View.VISIBLE); // 显示提醒图标 } else { - mAlert.setVisibility(View.GONE); + mAlert.setVisibility(View.GONE); // 隐藏提醒图标 } } } - mTime.setText(DateUtils.getRelativeTimeSpanString(data.getModifiedDate())); + + mTime.setText(DateUtils.getRelativeTimeSpanString(data.getModifiedDate())); // 设置时间文本为相对时间 - setBackground(data); + setBackground(data); // 设置背景 } + // 设置背景 private void setBackground(NoteItemData data) { int id = data.getBgColorId(); - if (data.getType() == Notes.TYPE_NOTE) { - if (data.isSingle() || data.isOneFollowingFolder()) { - setBackgroundResource(NoteItemBgResources.getNoteBgSingleRes(id)); - } else if (data.isLast()) { - setBackgroundResource(NoteItemBgResources.getNoteBgLastRes(id)); - } else if (data.isFirst() || data.isMultiFollowingFolder()) { - setBackgroundResource(NoteItemBgResources.getNoteBgFirstRes(id)); - } else { - setBackgroundResource(NoteItemBgResources.getNoteBgNormalRes(id)); + if (data.getType() == Notes.TYPE_NOTE) { // 如果是笔记类型 + if (data.isSingle() || data.isOneFollowingFolder()) { // 如果是单个笔记或者是紧接在文件夹后面的单个笔记 + setBackgroundResource(NoteItemBgResources.getNoteBgSingleRes(id)); // 设置背景资源为单个笔记的背景资源 + } else if (data.isLast()) { // 如果是最后一个笔记 + setBackgroundResource(NoteItemBgResources.getNoteBgLastRes(id)); // 设置背景资源为最后一个笔记的背景资源 + } else if (data.isFirst() || data.isMultiFollowingFolder()) { // 如果是第一个笔记或者是紧接在文件夹后面的多个笔记 + setBackgroundResource(NoteItemBgResources.getNoteBgFirstRes(id)); // 设置背景资源为第一个笔记的背景资源 + } else { // 其他情况 + setBackgroundResource(NoteItemBgResources.getNoteBgNormalRes(id)); // 设置背景资源为普通笔记的背景资源 } - } else { - setBackgroundResource(NoteItemBgResources.getFolderBgRes()); + } else { // 如果是文件夹类型 + setBackgroundResource(NoteItemBgResources.getFolderBgRes()); // 设置背景资源为文件夹的背景资源 } } public NoteItemData getItemData() { return mItemData; } -} +} \ No newline at end of file