- 浏览: 1013649 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 2197屏幕适配一直是一个让人头疼的问题,论坛上讨论这个问题的最后也 ... -
禁止Eclipse中xml文件Run as的XSL Transformation生成out.xml以方便Android应用开发
2012-08-26 21:38 2648可以在Eclipse里面配置,菜单Windows->P ... -
android 自带的主题 theme 的使用
2012-08-25 23:21 2377在android的sdk 安装目录data\r ... -
android 如何判断程序是否在前台运行
2012-04-06 00:04 3107private boolean isTopActiv ... -
用代码如何检测一个android程序是否在运行
2012-04-05 23:07 3746<uses-permission android:na ... -
Android-TextView多行本文滚动轻松实现
2012-03-04 19:37 1332TextView tvAndroid123 = (T ... -
让背景模糊的效果
2012-03-04 16:22 2626设置透明度(这是窗体本身的透明度,非背景) Wi ... -
Android 使用shape
2012-03-04 16:14 1058刚刚翻论坛的时候看到的,总觉得以后会用的上这些零零碎碎 ... -
关于android中使用很多大图片的一些做法
2012-02-29 00:11 1448最近在xoom上开发应用,碰到ui设计都是使用图片,而 ... -
屏幕尺寸和像素密度的资源限定符
2012-02-23 15:31 1615屏幕尺寸和像素密度的资源限定符 以下是可以用来为 ... -
android开发之gallery 实现滚动一张且短距离滑动实现滚动
2011-12-19 18:50 1934首先gallery的特点就不用多说了吧,惯性滚动、半屏翻页,但 ... -
下拉刷新
2011-10-14 15:09 1192要实现这种效果 可以参见这里https://git ... -
android应用换皮肤(转)
2011-10-12 14:36 3210看到好多人在问题与解答里面都问怎么换肤,搜了一下论坛里面好像没 ... -
Android签名到底都有哪些作用?
2011-10-09 17:59 2306所有的Android应用程序都要求开发人员用一个证书进 ... -
Android 动态切换全屏和非全屏模式
2011-10-08 15:15 3482直接贴出代码: Java代码 ... -
Android开发——利用Cursor+CursorAdapter实现界面实时更新(转)
2011-09-20 15:47 3088好久没有更新博客了 ... -
Nginx使用反向代理时 Hessian 的 411 错误解决方案【转】
2011-09-15 13:48 2366问题描述: 用 Hessian 实现 web se ... -
理解 Android 本地数据存储 AP(转)
2011-05-18 14:25 1915样例应用程序 为了突出 Android 应用程序开发的本 ... -
Android 本地数据存储 API(三)(转)
2011-05-18 14:22 2573为私有数据使用设备的内部存储器 有了数据存储 API ... -
Android中读写文件(转)
2011-05-18 14:21 7176android中读写文件分两部 ...
相关推荐
在Android应用开发中,本地数据存储是至关重要的一个环节,特别是在处理用户数据或者应用程序需要持久化数据时。本文将深入探讨Android系统中的文件存储机制,包括如何读取、写入、重写和删除.txt格式的文件。理解...
本文档主要讲述的是Android 本地数据存储;对于需要跨应用程序执行期间或生命期而维护重要信息的应用程序来说,能够在移动设备上本地存储数据是一种非常关键的功能。作为一名开发人员,您经常需要存储诸如用户首选项...
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的使用。开发者需要熟练掌握这些技术,...