Android Studio中ListView仅显示笔记标题、点击查看全文实现方法
问题说明
当前简易笔记应用使用ListView实现笔记列表时,长文本笔记会在列表项中展示全部内容,需要调整为:列表项仅展示笔记标题/摘要,点击进入编辑页才展示完整内容。
解决方案
问题根源是默认ArrayAdapter会直接绑定全量笔记文本做渲染,不需要修改现有笔记存储、编辑、持久化的核心逻辑,只需要自定义列表项的文本渲染规则即可,完整内容始终保留在内存和本地存储中,编辑页读取不受影响。
具体修改步骤
1. 替换MainActivity中的默认ArrayAdapter实现
找到MainActivity.java中原先初始化适配器的代码:
arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,notes) ;
替换为自定义适配器实现,重写列表项渲染逻辑,仅展示截取后的摘要:
arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, notes){ @NonNull @Override public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { View itemView = super.getView(position, convertView, parent); TextView itemText = itemView.findViewById(android.R.id.text1); String fullNote = notes.get(position); String showTitle; // 空笔记统一显示无标题 if (fullNote.trim().isEmpty()) { showTitle = "无标题笔记"; } // 内容超过20字时截取前20字加省略号 else if (fullNote.length() > 20) { showTitle = fullNote.substring(0, 20) + "..."; } // 短内容直接完整展示 else { showTitle = fullNote; } itemText.setText(showTitle); // 强制列表项单行显示,末尾超出自动省略 itemText.setMaxLines(1); itemText.setEllipsize(TextUtils.TruncateAt.END); return itemView; } };
在MainActivity.java顶部的导入区域补充缺少的类引用:
import android.text.TextUtils; import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.Nullable;
2. 修复原有代码的冗余bug
原代码中无论是否存在历史笔记,都会强制执行notes.add("Note 1");,会导致每次启动APP都新增一条重复的测试笔记,直接删除这行代码即可,仅在首次启动无历史数据时保留示例笔记:
if(set==null) { notes.add("Example note"); } else{ notes=new ArrayList(set); } // 删掉下面这行冗余代码 // notes.add("Note 1");
3.(可选)修正文件名拼写错误
当前编辑页布局文件名存在拼写错误:acitivity_node-editor.xml,建议修正为和Activity对应的标准命名activity_note_editor.xml,同时同步修改NoteEditorActivity.java中setContentView引用的布局名,避免后续资源引用报错。
实现效果
- 列表页所有笔记项仅展示单行摘要,长文本自动截断加省略号,不会再出现长内容撑满列表的问题
- 点击列表项进入编辑页时,仍然可以读取、编辑完整的笔记内容,原有新增、删除、自动保存逻辑完全不受影响
- 本地SharedPreferences存储的始终是完整笔记内容,不会丢失数据
内容的提问来源于stack exchange,提问作者Dafny dsa
相关产品推荐
相关产品推荐

