- 浏览: 1008486 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (367)
- JavaScript (23)
- Java (60)
- Python (41)
- 其他 (36)
- SQL (4)
- 开发工具 (26)
- Linux (15)
- AJAX (6)
- Cache (3)
- 正则 (4)
- 架构 (9)
- 手机 (3)
- MySQL (4)
- Android (115)
- vps (1)
- 网站 (4)
- scale (3)
- 搜索引擎 (3)
- iPhone (2)
- hessian (1)
- hessdroid (1)
- 411 (1)
- jstat (1)
- gc (1)
- gallery (1)
- 惯性 (1)
- eclipse (1)
- mac wget error (1)
- miui file explorer 无用 解决办法 (1)
- vim (1)
最新评论
-
qingyezhangluo:
哎。楼主您既然是分享代码的为什么要加密的呢?而且问你密码还不回 ...
android应用换皮肤(转) -
MagicError:
kavoe 写道下载文件有密码。。。。
http抓包工具 -
knightdf:
我先试下再来
JAVA的RAS加密例子 -
kavoe:
下载文件有密码。。。。
http抓包工具 -
changanfounder:
hmc1985 写道setCallbackDuringFlin ...
android gallery滑动惯性问题
使用 SQLite 数据库
Android 通过 SQLite 提供对本地关系数据库的支持。表中(定义在以下代码清单中)汇总了样例应用程序中使用的重要数据库类。
样例应用程序使用了一个 DBHelper
类来封装一些数据库操作(参见 清单 9)。
package com.cenriqueortiz.tutorials.datastore; import java.util.ArrayList; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBHelper extends SQLiteOpenHelper { |
为数据库版本、数据库名称和表名称定义了很多常量(参见 清单 10)。
private SQLiteDatabase db; private static final int DATABASE_VERSION = 1; private static final String DB_NAME = "sample.db"; private static final String TABLE_NAME = "friends"; /** * Constructor * @param context the application context */ public DBHelper(Context context) { super(context, DB_NAME, null, DATABASE_VERSION); db = getWritableDatabase(); } |
在准备好创建数据库时,会调用 onCreate()
方法。在该方法中,创建表(参见 清单 11)。
/** * Called at the time to create the DB. * The create DB statement * @param the SQLite DB */ @Override public void onCreate(SQLiteDatabase db) { db.execSQL( "create table " + TABLE_NAME + " (_id integer primary key autoincrement, " + " fid text not null, name text not null) "); } |
insert()
方法在信息导出到数据库时由 MainActivity
调用(参见 清单 12)。
/** * The Insert DB statement * @param id the friends id to insert * @param name the friend's name to insert */ public void insert(String id, String name) { db.execSQL("INSERT INTO friends('fid', 'name') values ('" + id + "', '" + name + "')"); } |
deleteAll()
方法在清理数据库时由 MainActivity
调用。它删除表(参见 清单 13)。
/** * Wipe out the DB */ public void clearAll() { db.delete(TABLE_NAME, null, null); } |
提供了两个 SELECT ALL
方法:cursorSelectAll()
和 listSelectAll()
,前者返回一个游标,后者返回一个 Friend
对象 ArrayList
。这些方法在从数据库加载信息时由 MainActivity
调用(参见 清单 14)。
清单 14. 运行返回 ArrayList
的 Select All
/** * Select All returns a cursor * @return the cursor for the DB selection */ public Cursor cursorSelectAll() { Cursor cursor = this.db.query( TABLE_NAME, // Table Name new String[] { "fid", "name" }, // Columns to return null, // SQL WHERE null, // Selection Args null, // SQL GROUP BY null, // SQL HAVING "name"); // SQL ORDER BY return cursor; } |
listSelectAll()
方法返回 ArrayList
容器中选定的行,该容器由 MainActivity
用来将它绑定到 MainScreen ListView
(参见 清单 15)。
/** * Select All that returns an ArrayList * @return the ArrayList for the DB selection */ public ArrayList<Friend> listSelectAll() { ArrayList<Friend> list = new ArrayList<Friend>(); Cursor cursor = this.db.query(TABLE_NAME, new String[] { "fid", "name" }, null, null, null, null, "name"); if (cursor.moveToFirst()) { do { Friend f = new Friend(); f.id = cursor.getString(0); f.name = cursor.getString(1); list.add(f); } while (cursor.moveToNext()); } if (cursor != null && !cursor.isClosed()) { cursor.close(); } return list; } |
如果检测到数据库版本更改,就会调用 onUpgrade()
方法(参见 清单 16)。
/** * Invoked if a DB upgrade (version change) has been detected */ @Override /** * Invoked if a DB upgrade (version change) has been detected */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // Here add any steps needed due to version upgrade // for example, data format conversions, old tables // no longer needed, etc } } |
整个 MainActivity
中,当您将信息导出到数据库、从数据库加载信息以及清理数据库时,都会使用 DBHelper
。第一件事是在创建MainActivity
时实例化 DBHelper
。在 onCreate()
时执行的其他任务包括初始化不同的屏幕视图(参见 清单 17)。
清单 17. MainActivity onCreate()
初始化数据库
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); appContext = this; setContentView(R.layout.main); dbHelper = new DBHelper(this); listView = (ListView) findViewById(R.id.friendsview); friendsArrayAdapter = new FriendsArrayAdapter( this, R.layout.rowlayout, friends); listView.setAdapter(friendsArrayAdapter); : : } |
清单 18 展示了如何从资产加载好友列表以及如何将之解析并插入数据库中。
String fname = prefsGetFilename(); if (fname != null && fname.length() > 0) { buffer = getAsset(fname); // Parse the JSON file String friendslist = new String(buffer); final JSONObject json = new JSONObject(friendslist); JSONArray d = json.getJSONArray("data"); int l = d.length(); for (int i2=0; i2<l; i2++) { JSONObject o = d.getJSONObject(i2); String n = o.getString("name"); String id = o.getString("id"); dbHelper.insert(id, n); } // Only the original owner thread can touch its views MainActivity.this.runOnUiThread(new Runnable() { public void run() { friendsArrayAdapter.notifyDataSetChanged(); } }); } |
清单 19 展示了如何执行 SELECT ALL
以及如何将数据绑定到主屏幕 ListView
。
清单 19. MainActivity
Select All
和将数据绑定到 ListView
final ArrayList<Friend> dbFriends = dbHelper.listSelectAll(); if (dbFriends != null) { // Only the original owner thread can touch its views MainActivity.this.runOnUiThread(new Runnable() { public void run() { friendsArrayAdapter = new FriendsArrayAdapter( MainActivity.this, R.layout.rowlayout, dbFriends); listView.setAdapter(friendsArrayAdapter); friendsArrayAdapter.notifyDataSetChanged(); } }); } |
接下来,了解一下在示例应用程序中使用 Internal Storage API。
感谢:http://hi.baidu.com/304580500/blog/item/d09187dbf87fbecfb7fd487b.html
发表评论
-
android屏幕适配
2012-11-16 17:24 2188屏幕适配一直是一个让人头疼的问题,论坛上讨论这个问题的最后也 ... -
禁止Eclipse中xml文件Run as的XSL Transformation生成out.xml以方便Android应用开发
2012-08-26 21:38 2632可以在Eclipse里面配置,菜单Windows->P ... -
android 自带的主题 theme 的使用
2012-08-25 23:21 2369在android的sdk 安装目录data\r ... -
android 如何判断程序是否在前台运行
2012-04-06 00:04 3096private boolean isTopActiv ... -
用代码如何检测一个android程序是否在运行
2012-04-05 23:07 3736<uses-permission android:na ... -
Android-TextView多行本文滚动轻松实现
2012-03-04 19:37 1313TextView tvAndroid123 = (T ... -
让背景模糊的效果
2012-03-04 16:22 2618设置透明度(这是窗体本身的透明度,非背景) Wi ... -
Android 使用shape
2012-03-04 16:14 1047刚刚翻论坛的时候看到的,总觉得以后会用的上这些零零碎碎 ... -
关于android中使用很多大图片的一些做法
2012-02-29 00:11 1443最近在xoom上开发应用,碰到ui设计都是使用图片,而 ... -
屏幕尺寸和像素密度的资源限定符
2012-02-23 15:31 1603屏幕尺寸和像素密度的资源限定符 以下是可以用来为 ... -
android开发之gallery 实现滚动一张且短距离滑动实现滚动
2011-12-19 18:50 1925首先gallery的特点就不用多说了吧,惯性滚动、半屏翻页,但 ... -
下拉刷新
2011-10-14 15:09 1169要实现这种效果 可以参见这里https://git ... -
android应用换皮肤(转)
2011-10-12 14:36 3195看到好多人在问题与解答里面都问怎么换肤,搜了一下论坛里面好像没 ... -
Android签名到底都有哪些作用?
2011-10-09 17:59 2297所有的Android应用程序都要求开发人员用一个证书进 ... -
Android 动态切换全屏和非全屏模式
2011-10-08 15:15 3470直接贴出代码: Java代码 ... -
Android开发——利用Cursor+CursorAdapter实现界面实时更新(转)
2011-09-20 15:47 3076好久没有更新博客了 ... -
Nginx使用反向代理时 Hessian 的 411 错误解决方案【转】
2011-09-15 13:48 2357问题描述: 用 Hessian 实现 web se ... -
理解 Android 本地数据存储 AP(转)
2011-05-18 14:25 1901样例应用程序 为了突出 Android 应用程序开发的本 ... -
Android 本地数据存储 API(三)(转)
2011-05-18 14:22 2560为私有数据使用设备的内部存储器 有了数据存储 API ... -
Android中读写文件(转)
2011-05-18 14:21 7166android中读写文件分两部 ...
相关推荐
在Android应用开发中,本地数据存储是至关重要的一个环节,特别是在处理用户数据或者应用程序需要持久化数据时。本文将深入探讨Android系统中的文件存储机制,包括如何读取、写入、重写和删除.txt格式的文件。理解...
4. **数据存储**:Android提供了多种数据存储方式,如SharedPreferences(键值对存储)、SQLite数据库、文件系统和ContentProvider。 5. **网络编程**:涉及HttpURLConnection、OkHttp等网络库,以及Android的...
在Android应用开发中,本地数据存储是至关重要的,SQLite数据库作为一种轻量级的数据库系统,被广泛用于存储和管理应用程序中的结构化数据。本篇文章将深入探讨如何在Android中使用SQLite进行基本的增删改查操作,以...
在Android开发中,将数据写入到本地Excel文件是一个常见的需求,这通常涉及到对数据的存储和导出功能。在本教程中,我们将探讨如何在Android应用中实现这个功能,主要涉及的技术点包括使用第三方库Apache POI以及...
一、Android数据存储方式 1. SharedPreferences:适用于存储少量的键值对数据,如用户设置。它是一种轻量级的存储方案,数据以XML格式存储在磁盘上,易于读写。 2. 文件存储:可以创建自定义格式的文件来保存数据...
在Android平台上,对本地数据进行Excel的导入与导出是一项常见的需求,特别是在处理表格类数据时。本篇文章将深入探讨如何在Android平板上实现这一功能,主要涉及Android应用开发、Excel处理以及数据存储的相关知识...
11. **SQLite**:Android内置轻量级的SQLite数据库系统,用于本地数据存储。它支持SQL语句,方便进行数据操作。 12. **AsyncTask**和**Thread**:用于在后台线程执行耗时任务,避免阻塞主线程,提高应用性能。 13....
**ArcGIS for Android 本地数据和谷歌图层详解** ArcGIS for Android 是一款强大的地理信息系统(GIS)开发框架,专为Android平台设计,允许开发者创建具有地图显示、地理数据分析和地理处理功能的应用程序。在2.0...
在Android开发中,数据存储是不可或缺的一部分,它允许应用程序持久保存数据,以便在用户退出应用后还能恢复状态或在后续使用中访问数据。本资源"android数据存储ppt课件及Demo"提供了一个全面学习Android数据存储的...
以上是Android本地文件存储和读取的基本知识点。通过熟练掌握这些技术,开发者可以更好地处理应用中的数据持久化,提高用户体验。在实际开发中,还应结合具体需求,选择合适的数据结构和文件格式,以实现高效且安全...
API Level 8(Froyo)开始支持SQLite数据库的升级,让数据存储更加灵活。API Level 10(Gingerbread)加强了对蓝牙2.1的支持,提升了设备间的数据传输效率。 API Level 11(Honeycomb)是专为平板电脑设计的版本,...
这份文档覆盖了Android开发的各个方面,包括系统服务、UI框架、多媒体支持、网络通信、数据存储等。以下是基于这个文档及其内容的一些关键知识点: 1. **Android SDK**:SDK(Software Development Kit)是Android...
在安卓(Android)系统中,数据存储是应用开发不可或缺的一部分,它允许应用程序持久化数据,以便在用户退出或设备重启后仍然能够访问。本压缩包文件"安卓Android源码——安卓Android学习——数据存储.rar"显然是...
本教程将详细讲解Android中常见的数据存储方式,并通过提供的源码进行实例解析。 1. SharedPreferences SharedPreferences是Android中最简单的数据存储方式,常用于存储轻量级、配置类的数据,如用户偏好设置。它...
3. **数据存储**:包括SQLite数据库操作、SharedPreferences设置、ContentProvider使用,以及最近的Room数据库框架。这些都是Android应用持久化数据的重要方式。 4. **网络通信**:涵盖了HTTP请求(如使用...
SQLite是轻量级的关系型数据库,适用于本地数据存储;SharedPreferences用于存储简单的键值对;ContentProvider则用于跨应用数据共享。 5. **网络通信**: Android API提供了`HttpURLConnection`、`HttpClient`...
Android API提供了多种数据储存方式,以适应不同的需求和场景。 1. **Shared Preferences**:这是一种用于存储轻量级、私有数据的机制,通常用于保存用户的设置或者简单偏好。Shared Preferences是以键值对的形式...
在Android平台上,将PPTX文件转换为图片并存储到本地是一种常见的需求,尤其是在处理离线数据或在没有Microsoft Office支持的环境中。本教程将详细解释如何实现这一过程,主要涉及的技术是Apache POI库,这是一个...
总的来说,"android获取本地图片相册及图片"涉及的知识点包括:Android文件系统与权限管理、MediaStore API的使用、图片加载库的运用(如Glide)、多选功能的实现以及Intent的使用。开发者需要熟练掌握这些技术,...
- `Android中文翻译组——Android中文API——android.widget合集(中).chm` 虽然主要是关于Android的,但可能包含了一些与SQLite数据库相关的API,因为Android设备上的本地数据存储常使用SQLite。 5. **Android ...