上篇博客解决了Android客户端通过WebService与服务器端程序进行交互的问题,这篇博客重点关注两个问题,一个是Android应用程序如何与本机文件型数据库SQLite进行交互,另一问题则是如何在ListView中按照我们想要的界面效果进行展示。限于篇幅这篇重点讲ListView,下篇博客重点阐述SQLite。
ListView是一个常用的数据显示控件,假设我们要做一个简单的界面,如图所示。
这张图是我直接从Android平板电脑(Android 4.2.2)上面截图下来的,就是一个普通的列表,能够点击报名按钮获取到对应行的信息。
这里面显示的数据是我从SQLite数据库中查询出来的,封装的类的代码如下:
public class MyDatabaseHelper extends SQLiteOpenHelper {private static final String name = "mydb.db";// SQLite数据库文件名private static final int version = 1;// SQLite数据库版本号public MyDatabaseHelper(Context context) {super(context, name, null, version);}@SuppressLint("SimpleDateFormat")@Overridepublic void onCreate(SQLiteDatabase db) {try {// 开启事务db.beginTransaction();String sql = "create table jobInfo (name varchar(20),"+ "num integer," + "date varchar(10),"+ "description text)";db.execSQL(sql);//测试插入10条数据for (int i = 0; i < 10; i++) {db.execSQL("insert into jobInfo(name,num,date,description)values(?,?,?,?)",new Object[] {"name" + i,i,new SimpleDateFormat("yyyy-MM-dd").format(new Date()), "description" + i });}// 标识事务成功db.setTransactionSuccessful();} finally {// 结束事务db.endTransaction();}}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//数据库升级操作}}
在需要创建数据库、插入数据的地方都可以实例化MyDatabaseHelper这个类,关于更多的SQLite的细节下篇博客将会进行详细的说明。
activity_main.xml布局文件:
可以看到这是一个相对布局,里面有一个线性布局,线性布局里面又放置了4个TextView作为ListView数据的标题。下面直接是一个ListView控件,由于这是相对布局,为了让ListView显示在“表头”下面,我们设置了layout_below属性。此外要注意ListView的id的写法。
接着按照界面的要求,我们准备一下ListView加载布局文件的内容,我们起名为:list_item.xml。
list_item.xml:
<?xml version="1.0" encoding="utf-8"?>
这也是一个普通的线性布局,设置orientation为horizontal(水平)。
布局文件准备好,下面我们准备写代码了。
我们让MainActivity这个类继承自ListActivity,完整的代码如下:
public class MainActivity extends ListActivity {List
上面的代码有几个知识点需要注意:
1、SQLite数据库的查询操作
我们通过getReadableDatabase().query方法执行了查询操作,返回Cursor(游标,与JDBC中的ResultSet类似)对象。
2、ListView控件使用(重点)
我们参考了SimpleAdapter默认的构造函数的方法,创建了自定义的MyButtonAdapter类,在显示数据的同时,能够给每一行的按钮绑定点击事件。
3、弹出提示框
弹出提示框的代码很长,完全可以封装到一个方法中,简化代码。这里完整的列出来,目的就是体验一下设计思路。经过观察我们发现,这就是所谓的“链式编程”,可以通过连续的".",设置参数(控制显示效果)。
strings.xml:
<?xml version="1.0" encoding="utf-8"?> 确定 取消
最终在pad上面的执行效果如下:
- Android自学笔记1——基础知识
- 2011Android技术面试整理附有详细答案(包括百度、新浪、中科软等
- 【Android】在Android上使用OrmLite数据库框架 之 使用表配置文
- Android(安卓)四大组件之Activity 基础总结(1)
- Android读取assets目录下文件数据内容
- Android创建和使用数据库详… 分类: Android数据存储 ...
- Android创建和使用数据库详细指南
- Android(安卓)串口通信开发笔记01
- android中的全局变量定义与使用
随机推荐
-
Android(安卓)MVVM结合DataBinding的简单
-
android全局处理非捕捉异常
-
Android中Socket通信之TCP与UDP传输原理
-
[转]android 一直在最前面的浮动窗口效果
-
为android-support-v4.jar打包源码
-
Android布局低级错误
-
android 中调用接口发送短信
-
android 发送短信的两种方式
-
popwindow动画显示消失,activity切换动画
-
【Android代码片段之四】设置全屏