这几天的便签开发,首先遇到的问题就是数据库操作问题。现在已经可以读写数据库了,并能将数据放在正确的位置显示。

专门建立了一个数据库操作的包,命名为“...database”。新建一个类继承自SQLiteOpenHelper,有一个参数类型为Context的构造方法,只有一行语句来生成对象:

super(ctx, DATABASE_NAME, null, DATABASE_VERSION);

重写了两个方法,一个是 onCreate(SQLiteDatabase db) ,执行数据库的创建语句:

db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + _ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + TIME + " INTEGER, "
+ DETAIL + " TEXT NOT NULL);");

另外一个是 onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) ,升级数据库,两行语句:

db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME);
onCreate(db);

到此为止,数据库创建的类完成。

然后是数据绑定到listview,这一部分在MainActivity中完成。

getNotes()方法从数据库中获取数据集:

return managedQuery(CONTENT_URI, FROM, null, null, ORDER_BY);

showNotes(Cursor cursor)方法进行数据绑定:

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.item, cursor, FROM, TO);
setListAdapter(adapter);

打开一条便签后应该是要将相关的数据显示在新打开的NotesDetailActivity中的,也就是要实现在两个Activity中进行数据传递。我能想到的办法就是将在List中被点击的这条便签的数据保存下来,传递到新的NotesDetailActivity中。

给ListView中的Item添加点击事件的方法是:

onListItemClick(ListView l, View v, int position, long id)。

这个方法有四个参数,官方文档解释如下:

l The ListView where the click happened

v The view that was clicked within the ListView

position The position of the view in the list

id The row id of the item that was clicked

首先想到的是“怎么从这个被点击的Item取到数据库中的相应数据”,以此入手开始学习解决这个问题。

首先是获取被点击的Item:

View view = l.getChildAt(position);

第二步是从中取出绑定的数据:

TextView textView = (TextView) view.findViewById(R.id.detail);
detail = textView.getText().toString();

第三步是通过Intent将数据传递给另外一个Activity:

这一步分为两小步,可以理解为一是发送消息:

intent.putExtra("detail", detail);

二是接收消息(在另一个Activity中):

Intent intent = this.getIntent();
String detail = intent.getStringExtra("detail");

这里就是利用了Intent传递数据的机制。

Android再学习-便签开发小结-20141119的更多相关文章

  1. Android:日常学习笔记(8)———开发微信聊天界面

    Android:日常学习笔记(8)———开发微信聊天界面 只做Nine-Patch图片 Nine-Patch是一种被特殊处理过的PNG图片,能够指定哪些区域可以被拉升,哪些区域不可以.

  2. Android我的便签-----SQLite的使用方法

    在Android开发中也有数据库的存在,最近有空,把以前写的一个便签来讲述一下Android中的数据库,跟大家分享分享的,希望对大家有所帮助. SQLite简介 SQLite,是一款轻量级的关系型数据 ...

  3. Android再学习-20141023-Intent-Thread

    20141023-Android再学习 Intent对象的基本概念 Intent是Android应用程序组件之一 Intent对象在Android系统中表示一种意图 Intent当中最重要的内容是ac ...

  4. Android再学习-20141022-Activity的生命周期

    20141022-Android再学习 如何在一个应用程序当中定义多个Activity 定义一个类,继承Activity 在该类当中,复写Activity当中的onCreate方法.onCreate( ...

  5. Android再学习-20141018-布局-进度条

    20141018-Android再学习 对齐至控件的基准线 为了保证印刷字母的整齐而划定的线(四线三格的第三条线). android:layout_alignBaseline 与父控件的四个边缘对齐( ...

  6. Android再学习

    1.点击事件的几种实现方式 Button Btn1 = (Button)findViewById(R.id.button1);//获取按钮资源 Btn1.setOnClickListener(new ...

  7. Android再学习-20141111-Android应用的七大件

    Android应用的七大件 应用程序的四大组件: Android的四大组件,使用时需要在程序中注册. Activity: Activity是应用程序的一个界面,可以通过这个界面查看联系人.打电话或者玩 ...

  8. Android再学习-20140928-布局

    关于布局中的单位 PX是像素,这个没有问题.另外还有两个单位,一个是dp,这个是个相对单位,在任何分辨率的屏幕上显示效果是一样的,所以用dp来进行控件的大小设置.另外,字体的设置推荐用sp,这样字体可 ...

  9. android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)

    如有错漏请不吝拍砖指正,转载请注明出处,很感谢 桌面便签软件是android上经常使用软件的一种,比方比較早的Sticky Note,就曾很流行, Sticky Note的介绍能够參见 http:// ...

随机推荐

  1. 编译TWRP-recovery教程及源码地址

    TWRP这个是一个老外的开源项目,全称Team-Win-Recovery-Project Source:https://github.com/TeamWin/Team-Win-Recovery-Pro ...

  2. MemCache内存缓存系统

    memcached是一种缓存技术, 他可以把你的数据放入内存,从而通过内存访问提速,因为内存最快的, memcached技术的主要目的提速, 默认情况下占用的端口号为:11211. 在memachec ...

  3. 转:VmWare下安装CentOS6图文安装教程

    文章来自于:http://www.cnblogs.com/seesea125/archive/2012/02/25/2368255.html 查看文章索引请通过http://www.cnblogs.c ...

  4. DBUtils框架

    一.O-R Mapping 简介    一]概念:可以理解为对象和数据库的映射.    二]常用O-R Mapping映射工具        1)Hibernate(全自动框架)        2)l ...

  5. .Net框架与框架类库-转

    http://blog.csdn.net/rrrfff/article/details/6686493 .NET Framework 具有两个主要组件:公共语言运行库和 .NET Framework类 ...

  6. Codeforces Round #FF (Div. 2)__E. DZY Loves Fibonacci Numbers (CF447) 线段树

    http://codeforces.com/contest/447/problem/E 题意: 给定一个数组, m次操作, 1 l r 表示区间修改, 每次 a[i] +  Fibonacci[i-l ...

  7. Ubuntu 14.04 64位安装Android Studio 和 genymotion (下)

    接上一篇,上回书说到,我们可以进android studio的编辑器了.感觉不错.挺好的,先不说genymotion,先看看你的android项目有没有r文件,项目有没有错误? 如果没有问题的话,下面 ...

  8. Hp vPv

  9. 大型分布式C++框架《二:大包处理过程》

    本来这一篇是打算写包头在分布式平台中的具体变换过程的.其实文章已经写好了.但是想了这个应该是不能随便发表的.毕竟如果知道了一个包的具体每个字节的意义.能伪造包来攻击系统.其次来介绍一个包的具体变换过程 ...

  10. 使用MapReduce将HDFS数据导入到HBase(一)

    package com.bank.service; import java.io.IOException; import org.apache.hadoop.conf.Configuration;im ...