赞
踩
记事本界面包含内容列表和添加按钮,当长按列表条目(Item)时,会弹出一个提示是否删除Item的对话框,当点击对话框中的“确定”按钮时,删除Item,当点击对话框中的“取消”按钮时,取消删除Item。当点击记事本界面列表中的Item时,会跳转到修改记录界面,该界面可以查看和修改记录。当点击记事本界面的“添加”按钮时,会跳转到添加记录界面,该界面可以添加记录内容。
分别是记事本界面、添加记录界面、修改记录界面
操作系统:Window10系统。
开发工具:JDK1.8、Android Studio3.6+模拟器。
API版本:Android API 27。
创建一个名为Notepad的项目,Activity名称为NotepadActivity,布局文件名为activity_notepad。
在Android Studio中,切换到Project选项卡,在res文件夹中创建一个drawable-hdpi文件夹,将记事本界面所需的图片(找自己喜欢的,分别是添加、保存、删除、返回)放在drawable-hdpi文件夹中。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".NotepadActivity"> <TextView android:id="@+id/note_name" android:layout_width="match_parent" android:layout_height="45dp" android:textSize="20sp" android:textColor="@android:color/white" android:gravity="center" android:textStyle="bold" android:background="#fb7a6a" android:text="记事本"/> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" android:cacheColorHint="#00000000" android:divider="#E4E4E4" android:dividerHeight="1dp" android:fadingEdge="none" android:listSelector="#00000000" android:scrollbars="none" android:layout_below="@+id/note_name"> </ListView> <ImageView android:id="@+id/add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/add" android:layout_marginBottom="30dp" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true"/> </RelativeLayout>
项目创建后所有界面都有一个默认的标题栏,可以在清单文件(AndroidManifest.xml)中的标签中修改android:theme属性,去除标题栏。具体代码如下:
android:theme="@style/Theme.AppCompat.NoActionBar">
在res/layout文件夹中,创建一个布局文件notepad_item_layout.xml.
具体代码如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/item_content" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxLines="2" android:ellipsize="end" android:lineSpacingExtra="3dp" android:paddingTop="10dp" android:textColor="@android:color/black"/> <TextView android:id="@+id/list_time" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#fb7a6a" android:paddingTop="5dp" android:paddingBottom="7dp"/> </LinearLayout>
创建NotepadBean类用于存放记事本中的每个记录和保存记录的时间属性。代码如下:
package cn.itcast.notepad.bean; public class NotepadBean { private String id; private String notepadContent; private String notepadTime; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getNotepadContent() { return notepadContent; } public void setNotepadContent(String notepadContent) { this.notepadContent = notepadContent; } public String getNotepadTime() { return notepadTime; } public void setNotepadTime(String notepadTime) { this.notepadTime = notepadTime; } }
由于记事本界面的记录列表是使用ListView控件展示的,因此需要创建一个数据适配器NotepadAdapter对ListView控件进行数据适配。同时,在NotepadAdapter类中创建一个ViewHolder类,在该类中初始化Item界面中的控件。代码如下:
package cn.itcast.notepad.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import java.util.List; import cn.itcast.notepad.R; import cn.itcast.notepad.bean.NotepadBean; public class NotepadAdapter extends BaseAdapter { private List<NotepadBean> list; private LayoutInflater layoutInflater; public NotepadAdapter(Context context,List<NotepadBean> list){ this.layoutInflater=LayoutInflater.from(context); this.list=list; } @Override public int getCount() { return list==null ? 0 : list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView==null){ //如果旧视图为空 convertView=layoutInflater.inflate(R.layout.notepad_item_layout,null); viewHolder=new ViewHolder(convertView); convertView.setTag(viewHolder); //将该对象添加到convertView中进行缓存 }else { viewHolder=(ViewHolder) convertView.getTag(
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。