当前位置:   article > 正文

Android 项目开发流程——记事本 ,ListView、数据库操作、Activity跳转与数据回传、界面布局、界面控件的实际运用_android记事本实训流程图

android记事本实训流程图

Android 项目开发流程——记事本 ,ListView、数据库操作、Activity跳转与数据回传、界面布局、界面控件的实际运用

1、需求分析

1.1 功能分析

记事本界面包含内容列表和添加按钮,当长按列表条目(Item)时,会弹出一个提示是否删除Item的对话框,当点击对话框中的“确定”按钮时,删除Item,当点击对话框中的“取消”按钮时,取消删除Item。当点击记事本界面列表中的Item时,会跳转到修改记录界面,该界面可以查看和修改记录。当点击记事本界面的“添加”按钮时,会跳转到添加记录界面,该界面可以添加记录内容。

1.2 界面需求分析

分别是记事本界面、添加记录界面、修改记录界面

2、开发环境介绍

操作系统:Window10系统。

开发工具:JDK1.8、Android Studio3.6+模拟器。

API版本:Android API 27。

3、记事本功能业务实现

3.1 搭建记事本界面布局

3.1.1 创建项目

创建一个名为Notepad的项目,Activity名称为NotepadActivity,布局文件名为activity_notepad。

3.1.2 导入界面图片

在Android Studio中,切换到Project选项卡,在res文件夹中创建一个drawable-hdpi文件夹,将记事本界面所需的图片(找自己喜欢的,分别是添加、保存、删除、返回)放在drawable-hdpi文件夹中。

3.1.3 具体代码如下:
<?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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
3.1.4 去除标题栏

项目创建后所有界面都有一个默认的标题栏,可以在清单文件(AndroidManifest.xml)中的标签中修改android:theme属性,去除标题栏。具体代码如下:

android:theme="@style/Theme.AppCompat.NoActionBar">

    3.2 搭建记事本界面Item布局

    3.2.1 创建记事本界面Item布局文件

    在res/layout文件夹中,创建一个布局文件notepad_item_layout.xml.

    3.2.2 放置界面控件

    具体代码如下:

    <?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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    3.3 封装记录信息实体类

    创建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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    3.4 编写记事本界面列表适配器

    由于记事本界面的记录列表是使用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(
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
    推荐阅读
    相关标签
      

    闽ICP备14008679号