记事本主界面包含显示列表和添加按钮功能,我们创建NotepadActivity类实现,其中显示列表在NotepadActivity类中通过创建showQueryData()方法,在该方法中查询数据库存放的记录信息,并将该信息显示到记录列表中,其实现代码如下:
private void showQueryData(){ ? ? if(list!=null){ ? ? ? ? list.clear(); ? ? } ? ? list=mSQLiteHelper.query(); ? ? adapter=new NotepadAdapter(this,list); ? ? listView.setAdapter(adapter); }
为“添加按钮”通过setOnClickListener()方法设置点击事件,当点击该按钮时,跳转到添加记录的界面,其实现代码如下:
protected void onCreate(Bundle savedInstanceState) { ? ? super.onCreate(savedInstanceState); ? ? setContentView(R.layout.activity_main); ? ? listView=findViewById(R.id.listview); ? ? ImageView imageView=findViewById(R.id.add); ? ? initData(); ? ? imageView.setOnClickListener(new View.OnClickListener() { ? ? ? ? @Override ? ? ? ? public void onClick(View v) { ? ? ? ? ? ? Intent intent=new Intent(NotepadActivity.this,RecordActivity.class); ? ? ? ? ? ? startActivityForResult(intent,1); ? ? ? ? } ? ? }); }
3.5 RecordActivity类
RecordActivity为修改记录,我们在NotepadActivity中通过listView的setOnItemClickListener()方法监听Item的点击事件,携带被点击Item的记录内容跳转到RecordActivity中,其会根据获取的数据显示记录的内容。另外当我们需要删除记事本列表中的记录时,需要长按列表中的Item,此时会弹出一个对话框提示是否删除Item对应的事件。setOnItemClickListener()方法代码如下:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ ? ? ? ? @Override ? ? ? ? public void onItemClick(AdapterView<?>parent,View view,int position,long id ){ ? ? ? ? ? ? NotepadBean notepadBean=list.get(position); ? ? ? ? ? ? Intent intent=new Intent(NotepadActivity.this,RecordActivity.class); ? ? ? ? ? ? intent.putExtra("id",notepadBean.getId()); ? ? ? ? ? ? intent.putExtra("content",notepadBean.getNotepadContent()); ? ? ? ? ? ? intent.putExtra("time",notepadBean.getNotepadTime()); ? ? ? ? ? ? NotepadActivity.this.startActivityForResult(intent,1); ? ? ? ? } ? ? }); ? ? listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { ? ? ? ? @Override ? ? ? ? public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) { ? ? ? ? ? ? AlertDialog dialog; ? ? ? ? ? ? AlertDialog.Builder builder=new AlertDialog.Builder(NotepadActivity.this) ? ? ? ? ? ? ? ? ? ? .setMessage("是否删除此记录?") ? ? ? ? ? ? ? ? ? ? .setPositiveButton("确定", new DialogInterface.OnClickListener() { ? ? ? ? ? ? ? ? ? ? ? ? @Override ? ? ? ? ? ? ? ? ? ? ? ? public void onClick(DialogInterface dialog, int which) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? NotepadBean notepadBean=list.get(position); ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(mSQLiteHelper.deleteData(notepadBean.getId())){ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? list.remove(position);//删除对应的Item ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? adapter.notifyDataSetChanged();//更新记事本页面 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Toast.makeText(NotepadActivity.this,"删除成功",Toast.LENGTH_LONG).show(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? }) ? ? ? ? ? ? ? ? ? ? .setNegativeButton("取消", new DialogInterface.OnClickListener() { ? ? ? ? ? ? ? ? ? ? ? ? @Override ? ? ? ? ? ? ? ? ? ? ? ? public void onClick(DialogInterface dialog, int which) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? dialog.dismiss(); ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? dialog=builder.create(); ? ? ? ? ? ? dialog.show(); ? ? ? ? ? ? return true; ? ? ? ? } });
RecordActivity利用initData()函数接收传递的数据去,其代码如下:
public void initData(){ ? ? mSQLiteHelper=new SQLiteHelper(this); ? ? noteName.setText("添加记录"); ? ? Intent intent=getIntent(); ? ? if(intent!=null){ ? ? ? ? id=intent.getStringExtra("id"); ? ? ? ? if(id!=null){ ? ? ? ? ? ? noteName.setText("修改记录"); ? ? ? ? ? ? content.setText(intent.getStringExtra("content")); ? ? ? ? ? ? note_time.setText(intent.getStringExtra("time")); ? ? ? ? ? ? note_time.setVisibility(View.VISIBLE); ? ? ? ? } ? ? } }
同时,我们在RecordActivity中可以利用switch…case结构实现了编辑记录、保存和清除编辑的记录的功能,即通过EditText控件实现记录的编辑功能,为保存按钮设置点击事件;当点击保存按钮时将记录的内容和保存时间通过SQLiteHelper类的insertData()方法添加到数据库中;为清除按钮设置点击事件,当点击清除按钮时,将EditText控件的内容通过setText()方法置为空字符串。其OnClick()函数代码如下:
public void onClick(View v){ ? ? switch (v.getId()){ ? ? ? ? case R.id.note_back: ? ? ? ? ? ? finish(); ? ? ? ? ? ? break; ? ? ? ? case R.id.delete: ? ? ? ? ? ? content.setText(" "); ? ? ? ? ? ? break; ? ? ? ? case R.id.note_save: ? ? ? ? ? ? String noteContent =content.getText().toString().trim(); ? ? ? ? ? ? if(id!=null){ ? ? ? ? ? ? ? ? //修改记录的功能 ? ? ? ? ? ? ? ? if(noteContent.length()>0){ ? ? ? ? ? ? ? ? ? ? if (mSQLiteHelper.updateData(id,noteContent,DBUtils.getTime())){ ? ? ? ? ? ? ? ? ? ? ? ? showToast("修改成功"); ? ? ? ? ? ? ? ? ? ? ? ? setResult(2); ? ? ? ? ? ? ? ? ? ? ? ? finish(); ? ? ? ? ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? ? ? ? ? showToast("修改失败"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } else{ ? ? ? ? ? ? ? ? ? ? showToast("修改的记录内容不能为空"); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? //添加记录的功能 ? ? ? ? ? ? ? ? if(noteContent.length()>0){ ? ? ? ? ? ? ? ? ? ? if (mSQLiteHelper.insertData(noteContent,DBUtils.getTime())){ ? ? ? ? ? ? ? ? ? ? ? ? showToast("保存成功"); ? ? ? ? ? ? ? ? ? ? ? ? setResult(2); ? ? ? ? ? ? ? ? ? ? ? ? finish(); ? ? ? ? ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? ? ? ? ? showToast("保存失败"); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } else{ ? ? ? ? ? ? ? ? ? ? showToast("保存的记录内容不能为空"); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? ? break; ? ? } }
四、项目测试
1、项目运行主界面。
2、点击主界面添加进入添加页面,输入“Android课程设计”然后点击保存按钮会返回主界面并弹出“保存成功”信息。
3、长按我们刚刚新建的记录“Android课程设计”会弹出删除对话框,点击确定即可删除,并弹出“删除成功”信息。
4、选择并打开“20182800”记录,将其修改为“20180000”,然后点击保存按钮,会弹出“修改成功”的信息。
标签:SQLite
相关阅读 >>
android 使用vitamio打造自己的万能播放器(4)——本地播放(快捷搜索、数据存储)
更多相关阅读请进入《Sqlite》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。