一、搭建记事本布局
效果图:
(activity_notepad.xml)
1.去掉标题栏:在AndroidManifest.xml中的theme改成NoActionBar。
2.记事本主页布局:
<!--1.搭建记事本界面布局-->
<!--(1)TextView:显示界面标题-->
<!--(2)ListView:显示记录列表-->
<!--(3)ImageView:图片作添加按钮-->
3.细节解释:
(1)相对布局中:
背景色:#fefefe(网页安全色:偏白黄色)
android:background="#fefefe"
(2)ListView:
android:cacheColorHint="#00000000" <--避免滚动时,重绘View时出现其他颜色-->
android:divider="#E4E4E4" <--分割线:"#E4E4E4"颜色为极亮度的灰色阴影-->
android:dividerHeight="1dp" <--设置分割线高度-->
android:fadingEdge="none" <--滚动效果:取消滚动时的阴影层次-->
android:listSelector="#00000000" <--避免默认会显示选中的item为橙黄底色-->
android:scrollbars="none" <--滚动条:隐藏-->
android:layout_below="@+id/note_name" <--在~位置之下:在@+id/note_name控件之下-->
3.ImageView
android:layout_marginBottom="30dp" <--距离底部:30dp-->
android:layout_alignParentBottom="true" <--悬浮,并一直处于屏幕底端-->
android:layout_centerHorizontal="true" <--位置:居中-->
二、搭建记事本主界面的Item布局
(notepad_item_layout.xml)
1.Item布局
<!--2.搭建记事本主界面里的Item布局-->
<!--(1)TextView:显示内容-->
<!--(2)TextView:显示时间-->
2.细节解释:
android:maxLines="2" <--最大显示行数:2行(无论有多少行,只显示2行)-->
android:ellipsize="end" <--压缩显示:若内容过多,省略号在结尾-->
android:lineSpacingExtra="3dp" <--行间距-->
android:paddingTop="10dp" <--该控件内部度内容距离该控件上边缘的边距-->
三、封装记录信息实体类
(NotepadBean.java)
1.getset方法:
Id(记录的id)、notepadCountent(记录的内容)、noteoadTime(保存记录的时间)
四、编写记事本界面列表适配器
(NotepadAdapter.java)
1.继承BaseAdapter
(1)XML布局对象:LayoutInflater layoutInflater
(2)实体信息对象:List list
2.构造方法
3.四个重写
(1)获取Item总数:getCount()
(2)对应Item对象:getItem(int position)
(3)Item对象的Id:getItemId(int position)
(4)对应的Item视图:getView(int position, View convertView, ViewGroup parent)
-
在getView中:声明一个ViewHolder viewHolder类对象
- 在getView外:实现ViewHolder类:声明实际item布局空间
- 在实现ViewHolder类中:实现findViewById()方法
- 在getView外:实现ViewHolder类:声明实际item布局空间
-
套路:关联viewholder与convertView
if (convertView == null) { convertView = layoutInflater.inflate(R.layout.notepad_item_layout, null);//实例化一个对象(布局加载器) viewHolder = new ViewHolder(convertView);//实例化类对象 convertView.setTag(viewHolder