Android Studio|简单记事本开发

目录

效果展示:

路径和文件:

AndroidManifest.xml

AddContent.java

MainActivity.java

MyAdapter.java

NoteDb.java

ShowContent.java

activity_add_content.xml

activity_main.xml

activity_show_content.xml

item.xml

效果展示:

Android Studio|简单记事本开发

路径和文件:

Android Studio|简单记事本开发

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.itcast.note">

    <application android:allowbackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundicon="@mipmap/ic_launcher_round" android:supportsrtl="true" android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN">

                <category android:name="android.intent.category.LAUNCHER">
            </category></action></intent-filter>
        </activity>
        <activity android:name=".AddContent"></activity>
        <activity android:name=".ShowContent"></activity>
    </application>

</manifest>

AddContent.java

package cn.itcast.note;

import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

import java.text.SimpleDateFormat;
import java.util.Date;

public class AddContent extends AppCompatActivity {
    private EditText mEt;
    private NoteDb mDb;
    private SQLiteDatabase mSqldb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_content);
        mEt = (EditText) this.findViewById(R.id.text);
        mDb = new NoteDb(this);
        mSqldb = mDb.getWritableDatabase();//&#x83B7;&#x53D6;&#x53EF;&#x8BFB;&#x5199;SQLiteDatabase&#x5BF9;&#x8C61;
    }
    public void save(View v) {
        DbAdd();
        finish();
    }
    public void cancle(View v) {
        mEt.setText("");
        finish();
    }
    public void DbAdd() {
        ContentValues cv = new ContentValues();
        cv.put(NoteDb.CONTENT,mEt.getText().toString());
        cv.put(NoteDb.TIME,getTime());
        mSqldb.insert(NoteDb.TABLE_NAME,null,cv);
    }
    //&#x83B7;&#x5F97;&#x5F53;&#x524D;&#x65F6;&#x95F4;
    public String getTime() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy&#x5E74;MM&#x6708;dd&#x65E5; HH:mm:ss");
        Date date = new Date();
        String str = sdf.format(date);
        return str;
    }
}

MainActivity.java

package cn.itcast.note;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;

public class MainActivity extends AppCompatActivity {
    private Button mButton;
    private ListView mList;
    private Intent mIntent;
    private MyAdapter mAdapter;
    private NoteDb mNotedb;
    private Cursor cursor;
    private SQLiteDatabase dbreader;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mList = (ListView) this.findViewById(R.id.list);//&#x9996;&#x9875;&#x663E;&#x793A;&#x7684;&#x8BB0;&#x4E8B;&#x672C;&#x5185;&#x5BB9;ListView
        mNotedb = new NoteDb(this);
        dbreader = mNotedb.getReadableDatabase();//&#x83B7;&#x53D6;&#x53EF;&#x8BFB;SQLiteDatabase()&#x5BF9;&#x8C61;
        mList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @SuppressLint("Range")
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                cursor.moveToPosition(i);
                Intent intent = new Intent(MainActivity.this,ShowContent.class);
                intent.putExtra(NoteDb.ID,cursor.getInt(cursor.getColumnIndex(NoteDb.ID)));
                intent.putExtra(NoteDb.CONTENT,cursor.getString(cursor.getColumnIndex(NoteDb.CONTENT)));
                intent.putExtra(NoteDb.TIME,cursor.getString(cursor.getColumnIndex(NoteDb.TIME)));
                startActivity(intent);
            }
        });
    }

    public void add(View v) {
        //&#x663E;&#x793A;intent&#x6307;&#x7684;&#x662F;&#x76F4;&#x63A5;&#x6307;&#x5B9A;&#x76EE;&#x6807;&#x7EC4;&#x4EF6;
        //&#x4F7F;&#x7528;Intent&#x663E;&#x793A;&#x6307;&#x5B9A;&#x8981;&#x8DF3;&#x8F6C;&#x7684;&#x76EE;&#x6807;Activity
        //&#x521B;&#x5EFA;Intent&#x5BF9;&#x8C61;&#x4F20;&#x5165;2&#x4E2A;&#x53C2;&#x6570;&#xFF0C;&#x7B2C;&#x4E00;&#x4E2A;&#x53C2;&#x6570;&#xFF1A;&#x8868;&#x793A;&#x5F53;&#x524D;&#x7684;Activity&#xFF0C;&#x7B2C;&#x4E8C;&#x4E2A;&#x53C2;&#x6570;&#xFF1A;&#x8868;&#x793A;&#x8981;&#x8DF3;&#x8F6C;&#x5230;&#x7684;&#x76EE;&#x6807;Activity
        //&#x542F;&#x52A8;Activity
        mIntent = new Intent(MainActivity.this,AddContent.class);
        startActivity(mIntent);
    }
    public void selectDb() {
        //query()&#x65B9;&#x6CD5;&#xFF0C;&#x8BE5;&#x65B9;&#x6CD5;&#x8FD4;&#x56DE;&#x7684;&#x662F;&#x4E00;&#x4E2A;&#x884C;&#x6570;&#x96C6;&#x5408;Cursor&#xFF0C;Cursor&#x662F;&#x4E00;&#x4E2A;&#x6E38;&#x6807;&#x63A5;&#x53E3;&#xFF0C;&#x63D0;&#x4F9B;&#x904D;&#x5386;&#x67E5;&#x8BE2;&#x7ED3;&#x679C;&#x7684;&#x65B9;&#x6CD5;&#x3002;
        cursor = dbreader.query
                (NoteDb.TABLE_NAME,null,null,null,null,null,null);
        mAdapter = new MyAdapter(this,cursor);
        mList.setAdapter(mAdapter);
    }

    @Override
    protected void onResume() {
        super.onResume();
        selectDb();
    }
}

MyAdapter.java

package cn.itcast.note;

import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter {
    private Context mContext;
    private Cursor mCursor;
    private LinearLayout mLayout;
    public MyAdapter(Context mContext,Cursor mCursor) {
        this.mContext = mContext;
        this.mCursor = mCursor;
    }

    @Override
    public int getCount() {
        return mCursor.getCount();
    }

    @Override
    public Object getItem(int position) {
        return mCursor.getPosition();
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View view, ViewGroup viewGroup) {
        LayoutInflater inflater = LayoutInflater.from(mContext);
        mLayout = (LinearLayout) inflater.inflate(R.layout.item,null);
        TextView content = (TextView) mLayout.findViewById(R.id.list_content);
        TextView time = (TextView) mLayout.findViewById(R.id.list_time);
        mCursor.moveToPosition(position);
        String dbcontext = mCursor.getString(mCursor.getColumnIndex("content"));
        String dbtime = mCursor.getString(mCursor.getColumnIndex("time"));
        content.setText(dbcontext);
        time.setText(dbtime);
        return mLayout;
    }
}

NoteDb.java

package cn.itcast.note;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
//&#x521B;&#x5EFA;SQLite&#x6570;&#x636E;&#x5E93;&#x7684;&#x6B65;&#x9AA4;
//1.&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x7C7B;&#x7EE7;&#x627F;SQLiteOpenHelper&#x7C7B;
//2.&#x5728;&#x8BE5;&#x7C7B;&#x4E2D;&#x91CD;&#x5199;onCreate()&#x65B9;&#x6CD5;&#x548C;onUpgrade()&#x65B9;&#x6CD5;
public class NoteDb extends SQLiteOpenHelper {
    public static final String TABLE_NAME = "notes";
    public static final String CONTENT = "content";
    public static final String ID = "_id";
    public static final String TIME = "time";

    public NoteDb(Context context) {
        //&#x901A;&#x8FC7;super()&#x8C03;&#x7528;&#x7236;&#x7C7B;SQLiteOpenHelper&#x7684;&#x6784;&#x9020;&#x65B9;&#x6CD5;&#xFF0C;&#x5E76;&#x4F20;&#x5165;4&#x4E2A;&#x53C2;&#x6570;
        //&#x4E0A;&#x4E0B;&#x6587;&#x3001;&#x6570;&#x636E;&#x5E93;&#x540D;&#x79F0;&#x3001;&#x6E38;&#x6807;&#x5DE5;&#x5382;&#xFF08;&#x901A;&#x5E38;&#x662F;null&#xFF09;&#x3001;&#x6570;&#x636E;&#x5E93;&#x7248;&#x672C;
        super(context, "notes", null,1);
    }

    @Override
    //&#x6570;&#x636E;&#x5E93;&#x7B2C;&#x4E00;&#x6B21;&#x88AB;&#x521B;&#x5EFA;&#x65F6;&#x8C03;&#x7528;&#x8BE5;&#x65B9;&#x6CD5;
    public void onCreate(SQLiteDatabase db) {
        //&#x521D;&#x59CB;&#x5316;&#x6570;&#x636E;&#x5E93;&#x7684;&#x8868;&#x7ED3;&#x6784;&#xFF0C;&#x6267;&#x884C;&#x4E00;&#x6761;&#x5EFA;&#x8868;&#x7684;SQL&#x8BED;&#x53E5;
        String sql ="create table "+TABLE_NAME+" ( "+ID+" integer primary key AUTOINCREMENT, "+CONTENT
                +" TEXT NOT NULL, "+TIME+" TEXT NOT NULL )";
        db.execSQL(sql);
    }

    @Override
    //onUpgrade()&#x65B9;&#x6CD5;&#x5728;&#x6570;&#x636E;&#x5E93;&#x7248;&#x672C;&#x53F7;&#x589E;&#x52A0;&#x65F6;&#x8C03;&#x7528;&#xFF0C;&#x5982;&#x679C;&#x7248;&#x672C;&#x53F7;&#x4E0D;&#x589E;&#x52A0;&#xFF0C;&#x5219;&#x8BE5;&#x65B9;&#x6CD5;&#x4E0D;&#x8C03;&#x7528;&#x3002;
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

ShowContent.java

package cn.itcast.note;

import android.database.sqlite.SQLiteDatabase;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class ShowContent extends AppCompatActivity {
    private TextView mTextview;
    private TextView time;
    private NoteDb mDb;
    private SQLiteDatabase mSql;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show_content);
        mTextview = (TextView)this.findViewById(R.id.showtext);
        time = (TextView)this.findViewById(R.id.showtime);
        mDb = new NoteDb(this);
        mSql = mDb.getWritableDatabase();
        mTextview.setText(getIntent().getStringExtra(NoteDb.CONTENT));
        time.setText(getIntent().getStringExtra(NoteDb.TIME));
    }
    public void delete(View v) {
        int id = getIntent().getIntExtra(NoteDb.ID,0);
        mSql.delete(NoteDb.TABLE_NAME," _id = " + id,null);
        finish();

    }
    public void goBack(View v) {
        finish();
    }
}

activity_add_content.xml

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/back" tools:context="cn.itcast.note.AddContent">
    <edittext android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="top" android:textcolor="#000" android:hint="&#x6709;&#x4E86;&#x8BB0;&#x4E8B;&#x672C;&#xFF0C;&#x6211;&#x518D;&#x4E5F;&#x4E0D;&#x4F1A;&#x5FD8;&#x8BB0;&#x4E8B;&#x60C5;&#x4E86;&#xFF01;">
    <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margintop="10dp">
        <button android:id="@+id/save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="&#x4FDD;&#x5B58;" android:onclick="save">
        </button><button android:id="@+id/cancle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="&#x53D6;&#x6D88;" android:onclick="cancle">
    </button></linearlayout>
</edittext></linearlayout>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/back" tools:context="cn.itcast.note.MainActivity">
    <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal">
        <imagebutton android:id="@+id/add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="&#x6DFB;&#x52A0;" android:src="@drawable/btn" android:onclick="add">
    </imagebutton></linearlayout>
    <listview android:id="@+id/list" android:layout_width="match_parent" android:layout_height="wrap_content" android:textcolor="#000" android:layout_margintop="20dp">

    </listview>

</linearlayout>

activity_show_content.xml

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:orientation="vertical" android:background="@drawable/back" android:layout_height="match_parent" tools:context="cn.itcast.note.ShowContent">
    <textview android:id="@+id/showtime" android:layout_width="match_parent" android:layout_height="30dp" android:layout_marginleft="10dp" android:textsize="20sp">
    <textview android:id="@+id/showtext" android:layout_width="match_parent" android:layout_height="wrap_content" android:textsize="20sp" android:gravity="top" android:layout_weight="1" android:layout_margintop="10dp" android:layout_marginleft="10dp" android:textcolor="#000" android:hint="&#x6709;&#x4E86;&#x8BB0;&#x4E8B;&#x672C;&#xFF0C;&#x6211;&#x518D;&#x4E5F;&#x4E0D;&#x4F1A;&#x5FD8;&#x8BB0;&#x4E8B;&#x60C5;&#x4E86;&#xFF01;">
    <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margintop="10dp">
        <button android:id="@+id/delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="&#x5220;&#x9664;" android:onclick="delete">
        </button><button android:id="@+id/back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="&#x8FD4;&#x56DE;" android:onclick="goBack">
    </button></linearlayout>
</textview></textview></linearlayout>

item.xml

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">
    <linearlayout android:layout_width="match_parent" android:layout_height="50dp" android:layout_gravity="center_vertical" android:orientation="vertical">

        <textview android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/list_content" android:textcolor="#000" android:textsize="20sp" android:text="tv">
        <textview android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/list_time" android:textcolor="#685B5B" android:textsize="17sp" android:text="time">

    </textview></textview></linearlayout>
</linearlayout>

代码实现来自这个作者:http://t.csdn.cn/vGQIt

源码:

链接:https://pan.baidu.com/s/1nbYPPP67VszfURzB6A1cyw?pwd=uo6c
提取码:uo6c

Original: https://blog.csdn.net/weixin_46499784/article/details/124427536
Author: 芒格的迷妹
Title: Android Studio|简单记事本开发

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/817579/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球