Android实现简易记事本

 更新时间:2020年07月22日 14:11:16   作者:annyangya  
这篇文章主要为大家详细介绍了Android实现简易记事本,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android实现简易记事本的具体代码,供大家参考,具体内容如下

下面实现了一个简易的记事本,效果如下:

主要使用数据库存储数据。

完整代码链接:Android实现简易记事本

下面是部分代码:

MainActivity:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

 private EditText subject;
 private EditText body;
 private EditText date;
 private Button chooseDate;
 private Button add;
 private Button query;
 private ListView result;
 private LinearLayout title;
 private MyDataBaseHelper mMyDataBaseHelper;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 initView();
 }

 private void initView() {
 //控件初始化
 subject=(EditText)findViewById(R.id.subject);
 body=(EditText)findViewById(R.id.body);
 date=(EditText)findViewById(R.id.date);
 chooseDate=(Button)findViewById(R.id.chooseDate);
 add=(Button)findViewById(R.id.add);
 query=(Button)findViewById(R.id.query);
 result=(ListView)findViewById(R.id.result);
 title=(LinearLayout)findViewById(R.id.title);

 //选择日期,添加,查询的监听事件
 chooseDate.setOnClickListener(this);
 add.setOnClickListener(this);
 query.setOnClickListener(this);
 //查询情况默认隐藏,只有点击查询时才有效果
 title.setVisibility(View.INVISIBLE);
 }

 @Override
 public void onClick(View v) {
 //创建数据库
 mMyDataBaseHelper=new MyDataBaseHelper(MainActivity.this,"memento.db",null,1);
 SQLiteDatabase sqLiteDatabase=mMyDataBaseHelper.getReadableDatabase();
 //获取输入框的内容
 String strSubject=subject.getText().toString().trim();
 String strBody=body.getText().toString().trim();
 String strDate=date.getText().toString().trim();

 switch (v.getId()){
 case R.id.chooseDate:
 Calendar calendar=Calendar.getInstance();
 //选择时间,并将时间设置在date中
 new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
  @Override
  public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
  date.setText(year+"-"+month+"-"+dayOfMonth);
  }
 },calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();
 break;
 case R.id.add:
 //添加内容到数据库中,添加方法是add
 title.setVisibility(View.INVISIBLE);
 add(sqLiteDatabase,strSubject,strBody,strDate);
 Toast.makeText(this, "success!", Toast.LENGTH_SHORT).show();
 result.setAdapter(null);
 break;
 case R.id.query:
 //查询时显示结果设置为visible
 title.setVisibility(View.VISIBLE);
 //查询的结果保存在cursor中
 Cursor cursor=query(sqLiteDatabase,strSubject,strBody,strDate);
 SimpleCursorAdapter simpleCursorAdapter=new SimpleCursorAdapter(MainActivity.this,R.layout.result,cursor,new String[]{"_id", "subject", "body", "date"},
  new int[]{R.id.memento_num, R.id.memento_subject, R.id.memento_body, R.id.memento_date});
 //为listview添加适配器
 result.setAdapter(simpleCursorAdapter);
 break;
 }
 }

 //添加数据到数据库中的方法
 public void add(SQLiteDatabase sqLiteDatabase,String subject,String body,String date){
 sqLiteDatabase.execSQL("Insert into memento_tb values(null,?,?,?)",new String[]{subject,body,date});
 //初始设置为空
 this.subject.setText("");
 this.body.setText("");
 this.date.setText("");
 }

 //查询的方法,返回值为cursor
 public Cursor query(SQLiteDatabase sqLiteDatabase, String subject, String body, String date){
 Cursor cursor = sqLiteDatabase.rawQuery(
 "select * from memento_tb where subject like ? and body like ? and date like ? ",
 new String[]{"%" + subject + "%", "%" + body + "%",
  "%" + date + "%"});//对表的查询(insert的操作)
 return cursor;
 }

 protected void onDestroy() {
 super.onDestroy();
 if (mMyDataBaseHelper != null) {
 mMyDataBaseHelper.close();
 }
 }
}

MyDataBaseHelper:

public class MyDataBaseHelper extends SQLiteOpenHelper {
 //创建数据库的语句
 final String CREATE_TABLE_SQL =
 "create table memento_tb(_id integer primary " +
  "key autoincrement,subject,body,date)"; //建表


 public MyDataBaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
 super(context, name, factory, version);
 }

 //执行建表的操作
 @Override
 public void onCreate(SQLiteDatabase db) {
 db.execSQL(CREATE_TABLE_SQL);
 }

 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 System.out.println("---------" + oldVersion + "------->" + newVersion);
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Flutter利用Canvas模拟实现微信红包领取效果

    Flutter利用Canvas模拟实现微信红包领取效果

    这篇文章主要为大家详细介绍了如何利用Flutter中的Canvas模拟实现微信红包领取的效果,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-03-03
  • Android 利用ImageView属性实现选中和未选中效果

    Android 利用ImageView属性实现选中和未选中效果

    这篇文章主要介绍了Android巧用ImageView属性实现选中和未选中效果,实现思路通常我们会选择在布局里加个ImageView,然后通过代码层面加个判断去让ImageView加载不同状态的图片,需要的朋友可以参考下
    2023-06-06
  • Android实现环形进度条的实例

    Android实现环形进度条的实例

    本文通过实例代码给大家介绍了android实现环形进度条的实例代码,代码简单易懂,非常不错,需要的朋友参考下
    2017-01-01
  • Android 使用FragmentTabhost代替Tabhost

    Android 使用FragmentTabhost代替Tabhost

    这篇文章主要介绍了Android 使用FragmentTabhost代替Tabhost的相关资料,需要的朋友可以参考下
    2017-05-05
  • Android简单封装一个MVP基类流程详解

    Android简单封装一个MVP基类流程详解

    MVP是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。下面这篇文章主要给大家介绍了关于Android从实现到封装MVP的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧
    2023-03-03
  • 详解Android中visibility属性VISIBLE、INVISIBLE、GONE的区别

    详解Android中visibility属性VISIBLE、INVISIBLE、GONE的区别

    在Android开发中,大部分控件都有visibility这个属性,其属性有3个分别为“visible ”、“invisible”、“gone”。主要用来设置控制控件的显示和隐藏。本文就详细的讲解一下。
    2016-12-12
  • android自定义view实现钟表效果

    android自定义view实现钟表效果

    这篇文章主要为大家详细介绍了android自定义view实现钟表效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • Android Fragment多层嵌套重影问题的解决方法

    Android Fragment多层嵌套重影问题的解决方法

    这篇文章主要介绍了Android Fragment多层嵌套重影问题的解决方法,从解决bug的思想,导致原因,原理解析等方面找出问题所在原因,最终解决方法就可以简单了,对fragment 多层嵌套问题感兴趣的朋友一起通过本文学习吧
    2016-08-08
  • 深入Android Handler,MessageQueue与Looper关系

    深入Android Handler,MessageQueue与Looper关系

    这篇文章主要介绍了深入Android Handler,MessageQueue与Looper关系,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • 深入了解OkHttp3之Interceptors

    深入了解OkHttp3之Interceptors

    这篇文章主要介绍了深入了解OkHttp3之Interceptors,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01

最新评论