记事本App开发阶段三

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) {

    }
}

 

posted @ 2023-03-02 22:31  YE-  阅读(10)  评论(0编辑  收藏  举报