记事本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) { } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能