继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

℃江的程序员日记:“写诗App”版本1.0部分功能详解

摄氏du江
关注TA
已关注
手记 41
粉丝 58
获赞 1061

先来做一下需求分析:本人比较喜欢写诗词,但写这个东西,讲求的就是一个一触即发,酝酿不来,我平时又是一个手机不离身的人。所以在应用市场找了一圈记事本,发现没有太中意的,所以很据自己所学,做了一个轻量级的记事本类的APP,所以就按照自己审美做了一款APP,个人特色比较鲜明,见图:
图片描述


APP主打的是简单,一目了然,所以就没加什么复杂的功能,简单的增删改查,足够了。

图片描述


这个小玩意儿,我大概弄了两天吧,刚开始,审核一直不通过,后来发现保证函不太对,弄了好久,今天下午,人家终于答应给上线了,又隔了半个小时,我在百度手机助手上终于看到了,也算没白弄。

图片描述
图片描述
图片描述


废话不多说:现在来说制作思路,以及部分源码:
下图是目录结构:
图片描述

  • 1、我首先思考了我的业务需求,需要数据库,那么就需要一个vo层,然后需要一个dao层操作数据库,别问为什么需要一个vo层,我也不清楚,这是套路,毕竟需要调用里面的set和get方法。vo层Poem类代码如下:
package com.example.mypoem.vo;

/**
 * Created by Dujiang0311 on 2017/2/9.
 */

public class Poem {
    private int id;
    private String title;
    private String content;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

2、用到的数据库是自带的数据库,SQLite。数据库中的源代码如下:

package com.example.mypoem.sqlite;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by Dujiang0311 on 2017/2/9.
 */

public class SQLiteHelper extends SQLiteOpenHelper {

    /*SQLiteHelper的四个参数,上下文,数据库名字,null,版本号(任意数字)*/
    public SQLiteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    /*上面那个太过复杂,所以需要重载一个简单的方法:通过构造方法,完成数据库的创建*/
    public SQLiteHelper(Context context){
        super(context,"mydb",null,1);
    }
    //当sqliteOpenHelper中新添加了execSQL语句的时候一定要注意,将之前已经运行的MyWealth进行卸载
    /*通过OnCreate方法,实现数据表的创建*/
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table poem (id integer primary key autoincrement,title varchar2(20),content varchar2(50))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

3、上面那些都是固定的,写完就不需要改动了,现在来重点说一说数据库操作FileDao类,我首先做的是新增诗集的功能,所以存到数据库中的数据有两个,一个是标题,一个是内容,因此代码如下:

 //新增我的诗篇新增功能
    public Long addPoem(Poem poem){
        /*由于当前需要实现的是添加功能,所以我们需要调用getWritableDatabase()*/
        db = sqLiteHelper.getWritableDatabase();
        /*创建ContentValues对象*/
        ContentValues cv = new ContentValues();
        cv.put("title", poem.getTitle());
        cv.put("content",poem.getContent());
        return db.insert("poem",null,cv);
    }

然后我新建一个Activity,AddPoemActivity:layout布局如下:
图片描述
Activity代码如下:

package com.example.mypoem;

import android.content.Intent;
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.mypoem.dao.FileDao;
import com.example.mypoem.vo.Poem;

public class AddPoemActivity extends AppCompatActivity {

    private EditText et_title,et_content;
    private Poem poem ;
    private Button btn_save,btn_cacel;
    private FileDao fileDao;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_poem);

        poem = new Poem();
        fileDao = new FileDao(this);

        //获取控件

        et_title = (EditText) findViewById(R.id.et_title);
        et_content = (EditText) findViewById(R.id.et_content);
        btn_save = (Button) findViewById(R.id.btn_save);
        btn_cacel = (Button) findViewById(R.id.btn_cancel);

        btn_save.setOnClickListener(new OnClick());
        btn_cacel.setOnClickListener(new OnClick());

    }
    private class OnClick implements View.OnClickListener{

        @Override
        public void onClick(View view) {

            switch (view.getId()){
                case R.id.btn_save:

                    poem.setTitle(et_title.getText().toString());
                    poem.setContent(et_content.getText().toString());
                    if (fileDao.addPoem(poem)<0){
                        Toast.makeText(AddPoemActivity.this,"没有成功添加...",Toast.LENGTH_LONG).show();
                    }else {
                        Toast.makeText(AddPoemActivity.this,"已经成功添加...",Toast.LENGTH_LONG).show();
                        Intent intent = new Intent(AddPoemActivity.this,MainActivity.class);
                        startActivity(intent);
                    }
                    break;
                case R.id.btn_cancel:
                    finish();
                    break;
            }

        }
    }

}

至此关于诗集的添加的功能就全部完成,其实,其他的功能和这个套路差不多,只是有的是getWritableDatabase(),有的是getReadableDatabase()。
希望对诸位看客的思维有所启发。下面是我APP的下载地址:扫码即可免费下载,可能会有Bug,望见谅。以后我会完善的:
图片描述

打开App,阅读手记
6人推荐
发表评论
随时随地看视频慕课网APP

热门评论

不错哦,看起来好简单

查看全部评论