美文网首页
Android实战(2)| 记事本

Android实战(2)| 记事本

作者: yzbkaka | 来源:发表于2019-02-26 15:26 被阅读0次

第二个Android实战项目是记事本,同样,先放上代码:https://github.com/yzbkaka/kakaNote

源代码详解

1.布局

在主布局方面我先是舍弃了系统的ActionBar,用自己的start_title作为上方的标题;然后是使用一个LIstView和Material Design中的FloatingActionBar放在右下角作为新建按钮。

然后是在写便签的布局上,我是延用了主布局上的title,然后是将FloatingActionBar改成保存功能;而在中间的书写部分则是使用的EditText。

最后是查看界面,在点击了ListView上的子项之后就会跳转到查看界面,在查看界面我们可以进行点击title右边的小标志进行删除操作以及修改中间的EditText之后点击FloatingActionBar进行保存。

2.功能的实现

保存功能

保存功能其实就是使用数据库的基本操作,在这里我使用的是开源框架LitePal,具体的添加依赖以及创建映射的方法可以看这里Android框架1| LitePal。在创建完数据库之后就是要对用户写下的便签进行存储了,我这里是先获得EditText中的字符串,接着就是使用LitePal中的存储方法将数据进行存储。具体代码如下:

package com.example.yzbkaka.kakanote;


import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;


import com.example.yzbkaka.kakanote.db.Note;


public class WriteNote extends AppCompatActivity {
    EditText input;
    FloatingActionButton save;
    String content;
    Note note = new Note();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_write_note);
        input = (EditText) findViewById(R.id.input);
        save = (FloatingActionButton)findViewById(R.id.save);
        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                content = input.getText().toString();
                note.setWriteContent(content);
                note.save();
                Toast.makeText(WriteNote.this, "保存成功", Toast.LENGTH_SHORT).show();
                finish();
            }
        });
    }
}

之后当我们点击保存之后就是会跳转到主界面,并且会有一段短消息Toast来提示我们保存成功。

显示已保存的便签功能

首先是在主活动中的onCreate()方法中进行一些初始化的操作,即对ListView的点击以及创建按钮功能的实现,这是比较简单的,就不多说了。这里主要介绍一下onStart()方法中显示已经保存的便签的思路,首先我们深入理解到Activity的生命周期,因为当我们在写完一条便签后点击保存便会回到主界面,但是在我们写的时候主活动是处于onStop()的状态,当我们返回的时候系统会连续调用onRestart()-onStart()方法,所以我们必须要在onStart()方法中进行读取操作。读取的操作其实就是遍历数据库,如果有内容则会显示到ListView当中,具体的代码实现是:

protected void onStart(){
        super.onStart();
        adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,dataList);
        noteList = LitePal.findAll(Note.class);
        if(noteList.size()> 0){
            dataList.clear();
            for(Note note:noteList){
                dataList.add(note.getWriteContent());
            }
        }
        else{
            dataList.clear();
        }
        listView.setAdapter(adapter);
    }
删除和修改功能

当我们点击LIstView中的某一项时就会跳转到查看界面,在这里我们可以对便签进行删除或者修改,但是要注意我这里在启动Activity时是让Intent携带了便签的内容的,在LookNote.java中先获得intent中的所携带的便签中的信息,然后是显示在EditText中即可,如果要进行修改,则直接在EditText中进行修改,然后再使用LitePal中的更新操作即可。具体代码如下:

import android.content.Intent;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.example.yzbkaka.kakanote.db.Note;

import org.litepal.LitePal;


public class LookNote extends AppCompatActivity {
    Button delete;
    EditText input;
    FloatingActionButton save;
    Note note = new Note();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_look_note);
        delete = (Button)findViewById(R.id.delete);
        input = (EditText)findViewById(R.id.input);
        save = (FloatingActionButton)findViewById(R.id.save);
        Intent intent = getIntent();
        final String oldContent = intent.getStringExtra("key");
        input.setText(oldContent);

        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String newContent = input.getText().toString();
                note.setWriteContent(newContent);
                note.updateAll("writeContent = ?",oldContent);
                Toast.makeText(LookNote.this, "保存成功", Toast.LENGTH_SHORT).show();
                finish();
            }
        });

最后就是删除功能,我是直接使用LitePal中的删除操作进行的,代码对应如下:

delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                LitePal.deleteAll(Note.class,"writeContent = ?",oldContent);
                Toast.makeText(LookNote.this, "删除成功", Toast.LENGTH_SHORT).show();
                finish();
            }
        });

}

相关文章

网友评论

      本文标题:Android实战(2)| 记事本

      本文链接:https://www.haomeiwen.com/subject/sxnieqtx.html