package com.example.textapp;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.ListView;
import java.time.Instant;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ListView listView;
private ImageView add;
private MydDBhelper mydDBhelper;
private MyAdapter myAdapter;
private List<Note> resulList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=findViewById(R.id.listview);
add = findViewById(R.id.add);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//点击跳转按钮, 跳转到recordactivity页面进行数据的添加
Intent intent = new Intent(MainActivity.this, RecordActivity.class);//意图
//数据回传:页面跳转,期望第二个界面回传数据
startActivityForResult(intent,1);
}
});
//数据初始化
init();
//设置列表项的点击监听器
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//当列表项被点击时对该项的内容进行修改操作
}
});
}
//查询数据库的内容,将表中的数据显示到listview上面
private void init(){
if(resulList != null){
resulList.clear();
}
mydDBhelper = new MydDBhelper(MainActivity.this,"note.db",null,1);
resulList = mydDBhelper.query();
myAdapter = new MyAdapter(MainActivity.this, resulList);
listView.setAdapter(myAdapter);
}
//数据回传时执行的方法,用于接受回传回来的数据
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==1&&requestCode==2){
//说明数据的添加操作是正常执行的,数据库新增一条记录,主页中listview的内容就应该更新一下
init();
}
}
}
package com.example.textapp;
import androidx.appcompat.app.AppCompatActivity;
import android.media.browse.MediaBrowser;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class RecordActivity extends AppCompatActivity implements View.OnClickListener {
private ImageView backHome,delete,saveNote;
private TextView title,showTime;
private EditText et_Content;
private MydDBhelper mydDBhelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_record);
init();
//为控件设置监听器
backHome.setOnClickListener(this);
delete.setOnClickListener(this);
saveNote.setOnClickListener(this);
}
//获取控件对象
public void init(){
backHome = findViewById(R.id.backHome);
delete = findViewById(R.id.delete);
saveNote = findViewById(R.id.save_note);
title = findViewById(R.id.title);
showTime = findViewById(R.id.showTime);
et_Content = findViewById(R.id.content);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.save_note:
//获取编辑框中输入的内容
String content = et_Content.getText().toString();
if (content == null){
Toast.makeText(RecordActivity.this, "内容不能空!!", Toast.LENGTH_LONG).show();
}else{
//数据添加
mydDBhelper = new MydDBhelper(RecordActivity.this,"note.db",null,1);
Boolean flag = mydDBhelper.insertDate(content);
if(flag == true){
//如果添加成功,将数据回传的结果码设置为2
setResult(2);
Toast.makeText(RecordActivity.this, "添加成功!!", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(RecordActivity.this, "添加失败!!", Toast.LENGTH_SHORT).show();
}
}
break;
}
}
}
package com.example.textapp;
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;
/**
* 适配器的编写
*/
public class MyAdapter extends BaseAdapter {
//使用list<Note>, list会储存数据库中note表所有记录。。。
private List<Note> list;
//LayouInflater用户将某个布局转换为view的对象
private LayoutInflater layoutInflater;
//当创建MyAdapter对象的时候,我们需要list的数据
public MyAdapter( Context context, List<Note> list){
this.list = list;
layoutInflater = LayoutInflater.from(context);//是上面定义的两个私有变量进行初始化
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
//list.get(position) 获取的是Note,Note对象对应这表中某条记录
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.itemlayout,null,false);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
}else {
viewHolder= (ViewHolder)convertView.getTag();
}
//将数据库中的内容加载到对应的空间上
Note note = (Note) getItem(position);
viewHolder.t_content.setText("tom");
viewHolder.t_time.setText(note.getNote_time());
return convertView;
}
class ViewHolder{//用于给item的视图加载数据内容
TextView t_content,t_time;
public ViewHolder(View view){
t_content = view.findViewById(R.id.item_content);
t_time = view.findViewById(R.id.item_time);
}
}
}
package com.example.textapp;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.icu.text.SimpleDateFormat;
import androidx.annotation.Nullable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class MydDBhelper extends SQLiteOpenHelper {
private SQLiteDatabase db;
//创建数据库和表
public MydDBhelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
db = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table note(id integer primary key autoincrement,content text,note_time text)");
}
//对note表的操作
//添加数据
public boolean insertDate(String content){
//设置日期格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年mm月dd日 hh:mm:ss");
//获取当前时间,但这个时间是以外文的方式呈现
Date date = new Date(System.currentTimeMillis());
//格式化日期
String time = simpleDateFormat.format(date);
ContentValues contentValues = new ContentValues();
contentValues.put("content",content);
contentValues.put("note_time",time);
db.insert("note",null,contentValues);
long i = db.insert("note",null,contentValues);
if(i>0){
return true;
}else{
return false;
}
}
//删除数据,根据记录的id4进行删除
public boolean deleteDate(String deleteId){
int i = db.delete("noteInfo","id = ?",new String[]{deleteId});
return i>0?true:false;
}
//删除数据,能够记录的id进行更新
public boolean updateDate(String updateId, String updateContent){
//设置日期格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年mm月dd日 hh:mm:ss");
//获取当前时间,但这个时间是以外文的方式呈现
Date date = new Date(System.currentTimeMillis());
//将需要更新的内容存入contentValues
String time = simpleDateFormat.format(date);
ContentValues contentValues = new ContentValues();
contentValues.put("content",updateContent);
contentValues.put("time",time);
int i = db.update("noteInfo",contentValues,"id = ?",new String[]{updateId});
return i>0?true:false;
}
//查询数据,查询表中所有内容,将查询的内容用note的对象属性进行储存,并将对象存入集合中
public List<Note> query(){
List<Note> list = new ArrayList<>();
Cursor cursor = db.query("noteInfo",null,null,null,null,null,null);
while(cursor.moveToNext()){
Note note = new Note();
note.setId(String.valueOf(cursor.getInt(0)));
note.setContent(cursor.getString(1));
note.setNote_time(cursor.getString(2));
list.add(note);
}
return list;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int nweVersion) {
}
}