- 浏览: 385258 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (269)
- FY_UML (3)
- FY_JAVA (12)
- FY_JavaScript脚本 (7)
- FY_JSP (3)
- FY_Tapestry框架 (12)
- FY_Spring框架 (3)
- FY_Manager (5)
- FY_Junit(单元测试) (3)
- SERVER (14)
- FY_Struts2框架 (3)
- FY_SVN (2)
- FY_NoSQL (2)
- FY_jquery_sir (13)
- FY_hibernate_sir (8)
- FY_设计模式_sir (6)
- FY_Extjs_sir (10)
- FY_CI_sir (5)
- FY_Oracle_sir (11)
- FY_MySql_sir (10)
- FY_Hadoop_sir (3)
- FY_SOA_sir (1)
- 中文分词技术 (1)
- FY_Android (52)
- FY_架构 (2)
- FY_PhoneGap (2)
- FY_Webstorm (5)
- FY_Sencha Touch (3)
- HTML5应用快速开发 (1)
- FY_python (0)
- HADOOP (1)
- AI (0)
最新评论
-
antao592:
楼主,HkDataSourceWrapper中的getCurr ...
结合spring jdbc 实现分表分库的数据库访问构思 -
bonait:
不错,看看我的这个怎么样www.zipin168.com
So Easy京东商城 -
chenzheng8975:
...
So Easy京东商城 -
yzhenxing:
我导入demo后少com.google.android.gms ...
google地图demo -
echoaiya:
非常感谢~~
google地图demo
--------------------------------------------AndroidManifest.xml----------------------------------
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ch20"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".ListViewActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
--------------------------------------------Layout activity_main.xml----------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/add_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="添加数据"/>
<Button
android:id="@+id/delete_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="删除数据"/>
<Button
android:id="@+id/edit_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="修改数据"/>
<Button
android:id="@+id/qyery_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="查询数据"/>
<ListView
android:id="@+id/show_result"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
--------------------------------------------Layout list_item.xml---------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/view_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="id....." />
<TextView
android:id="@+id/view_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="name....." />
</LinearLayout>
--------------------------------------------Layout list_input.xml--------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/view_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="学生编号" />
<EditText
android:id="@+id/stu_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/view_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="学生姓名" />
<EditText
android:id="@+id/stu_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
--------------------------------------------ListViewActivity.java----------------------------------
package com.ch20;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
/**
*
* 项目名称:com.ch20
* 类名称:ListViewActivity
* 类描述: CRUD
* 创建人:方勇
* 创建时间:2012-12-4 上午9:37:39
* Copyright (c) 方勇-版权所有
*/
public class ListViewActivity extends Activity implements OnClickListener {
private ListView lisView;
private List<HashMap<String, Object>> list;
private Button addBtn, deleteBtn, editBtn, queryBtn;
private SimpleAdapter simpleAdapter;
private DBHelper dbHelper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViews();
setListeners();
dbHelper = new DBHelper(this);
init();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.add_id:
buildDialog_input().show();
break;
case R.id.delete_id:
// deleteDialog_input().show();
break;
case R.id.edit_id:
buildDialog_update().show();
break;
case R.id.qyery_id:
break;
}
}
/* 实例化UI */
private void findViews() {
addBtn = (Button) findViewById(R.id.add_id);
deleteBtn = (Button) findViewById(R.id.delete_id);
editBtn = (Button) findViewById(R.id.edit_id);
queryBtn = (Button) findViewById(R.id.qyery_id);
lisView = (ListView) findViewById(R.id.show_result);
}
/* 设置监听 */
private void setListeners() {
addBtn.setOnClickListener(this);
deleteBtn.setOnClickListener(this);
editBtn.setOnClickListener(this);
queryBtn.setOnClickListener(this);
}
/* 初始化数据 */
private void init() {
list = StudentBean.getInstance().findList(dbHelper);
simpleAdapter = new SimpleAdapter(this, list, R.layout.list_item, new String[] { "id", "name" }, new int[] {
R.id.view_id, R.id.view_name });
lisView.setAdapter(simpleAdapter);
}
/* 添加数据对话框 */
private AlertDialog buildDialog_input() {
/* 获取布局文件 */
LayoutInflater layoutInflater = LayoutInflater.from(this);
final View view = layoutInflater.inflate(R.layout.list_input, null);
/* 弹出对话框,输入数据 */
Builder build = new AlertDialog.Builder(this);
build.setTitle("输入学生信息");// 标题
build.setView(view);// 内容
// 确定按钮
build.setPositiveButton("submit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
/* 获取数据 */
EditText filed_id = (EditText) view.findViewById(R.id.stu_id);
EditText filed_name = (EditText) view.findViewById(R.id.stu_name);
/* 保存数据 */
// dbHelper.open();
// ContentValues values = new ContentValues();
// values.put("id", Integer.parseInt(filed_id.getText().toString()));
// values.put("name", filed_name.getText().toString());
// Log.i("a07", "id=" + filed_id.getText().toString());
// Log.i("a07", "name=" + filed_name.getText().toString());
// long size = dbHelper.insert("stu", values);
// dbHelper.close();
ContentValues values = new ContentValues();
values.put(StudentBean.STU_ID, Integer.parseInt(filed_id.getText().toString()));
values.put(StudentBean.STU_NAME, filed_name.getText().toString());
long size = StudentBean.getInstance().save(dbHelper, values);
/* 追加数据 */
if (size > 0) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put(StudentBean.STU_ID, Integer.parseInt(filed_id.getText().toString()));
map.put(StudentBean.STU_NAME, filed_name.getText().toString());
list.add(map);
/* 更新UI */
simpleAdapter.notifyDataSetChanged();
}
}
});
build.setNegativeButton("cancel", null);
return build.create();
}
/* 修改数据对话框 */
private AlertDialog buildDialog_update() {
/* 获取布局文件 */
LayoutInflater layoutInflater = LayoutInflater.from(this);
final View view = layoutInflater.inflate(R.layout.list_input, null);
/* 弹出对话框,输入数据 */
Builder build = new AlertDialog.Builder(this);
build.setTitle("输入学生信息");// 标题
build.setView(view);// 内容
// 确定按钮
build.setPositiveButton("submit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
/* 获取数据 */
EditText filed_id = (EditText) view.findViewById(R.id.stu_id);
EditText filed_name = (EditText) view.findViewById(R.id.stu_name);
/* 保存数据 */
// dbHelper.open();
// ContentValues values = new ContentValues();
// values.put("id", Integer.parseInt(filed_id.getText().toString()));
// values.put("name", filed_name.getText().toString());
// Log.i("a07", "id=" + filed_id.getText().toString());
// Log.i("a07", "name=" + filed_name.getText().toString());
// // 条件
// String whereClause = "id=?";
// // 条件值
// String[] whereArgs = new String[] { filed_id.getText().toString() };
// long size = dbHelper.update("stu", whereClause, whereArgs, values);
// dbHelper.close();
HashMap<String,Object> oldValues = new HashMap<String,Object>();
oldValues.put(StudentBean.STU_ID, Integer.parseInt(filed_id.getText().toString()));
long size = StudentBean.getInstance().update(dbHelper, oldValues, new String[]{ filed_name.getText().toString()});
if (size > 0) {
HashMap<String, Object> map = null;
String id = filed_id.getText().toString();
for (int i = 0; i < list.size(); i++) {
HashMap<String, Object> mmap = list.get(i);
if (mmap.get("id").toString().equals(id)) {
map = list.get(i);
break;
}
}
map.put("id", Integer.parseInt(filed_id.getText().toString()));
map.put("name", filed_name.getText().toString());
// list.add(map);
/* 更新UI */
simpleAdapter.notifyDataSetChanged();
}
}
});
build.setNegativeButton("cancel", null);
return build.create();
}
}
--------------------------------------------DBHelper.java-----------------------------------------
package com.ch20;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
*
* 项目名称:com.ch20
* 类名称:DBHelper
* 类描述:数据库操作工具类
* 创建人:方勇
* 创建时间:2012-12-4 上午8:50:40
* Copyright (c) 方勇-版权所有
*/
public class DBHelper {
/* DDL,定义数据结构 */
private DataBaseHelper dbHelper;
/* DML,数据库操作 */
private SQLiteDatabase db;
/* 数据库名 */
private final static String DATABASE_NAME = "a07.db3";
/* 版本号 */
private final static int DATABASE_VERSION = 1;
/* 上下文 */
private Context mcontext;
public DBHelper(Context mcontext) {
super();
this.mcontext = mcontext;
}
/* 静态内部类,针对DDL */
private static class DataBaseHelper extends SQLiteOpenHelper {
public DataBaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
/* 创建表结构 */
@Override
public void onCreate(SQLiteDatabase db) {
// db.execSQL("create table if not exists stu(id integer primary key,name text)");
db.execSQL(StudentBean.getInstance().sql$createTable());
// db.execSQL("insert into stu values(1,'a1')");
// db.execSQL("insert into stu values(2,'a2')");
}
/* 针对数据库升级 */
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
/* 打开数据库,如果已经打开就使用,否则创建 */
public DBHelper open() {
dbHelper = new DataBaseHelper(mcontext);
db = dbHelper.getWritableDatabase();
return this;
}
/* 关闭数据库 */
public void close() {
db.close();// 先关DML
dbHelper.close();// DDL
}
/* 插入 */
public long insert(String tableName, ContentValues values) {
return db.insert(tableName, null, values);
}
/**
*
* 更新
*
* @param tableName 表名
* @param whereClause 条件
* @param whereArgs 条件值
* @param values 更新值
* @return 更新的条数
*
*/
public long update(String tableName, String whereClause, String[] whereArgs, ContentValues values) {
return db.update(tableName, values, whereClause, whereArgs);
}
/* 删除 */
public boolean delete(String tableName, String whereClause, String[] whereArgs) {
return db.delete(tableName, whereClause, whereArgs) > 0;
}
/**
*
* 查询,多条记录
*
* @param tableName 表名
* @param columns 列名
* @param selection 条件
* @param selectionArgs 条件值
* @param groupBy 分组
* @param having 过滤
* @param orderBy 排序
* @param limit 分页(2,3),从第二条记录开始,向下取三条记录
* @return 动态游标
*
*/
public Cursor findList(String tableName, String[] columns, String selection, String[] selectionArgs, String groupBy,
String having, String orderBy, String limit) {
return db.query(tableName, columns, selection, selectionArgs, groupBy, having, orderBy, limit);
}
/**
*
* 精确查询,返回一条数据
*
* @param tableName 表名
* @param columns 列名
* @param selection 条件
* @param selectionArgs 条件值
* @param groupBy 分组
* @param having 过滤
* @param orderBy 排序
* @param limit 分页(2,3),从第二条记录开始,向下取三条记录
* @return 动态游标
*
*/
public Cursor findInfo(String tableName, String[] columns, String selection, String[] selectionArgs, String groupBy,
String having, String orderBy, String limit) {
Cursor cursor = db.query(tableName, columns, selection, selectionArgs, groupBy, having, orderBy, limit);
while (cursor.moveToNext()) {
cursor.moveToFirst();
}
return cursor;
}
/* 执行sql方法 */
public void executeSql(String sql) {
db.execSQL(sql);
}
}
--------------------------------------------StudentBean.java-------------------------------------
package com.ch20;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.content.ContentValues;
import android.database.Cursor;
/**
*
* 项目名称:com.ch20
* 类名称:StudentBean
* 类描述:业务逻辑Bean
* 创建人:方勇
* 创建时间:2012-12-6 上午11:57:16
* Copyright (c) 方勇-版权所有
*/
public class StudentBean {
private static StudentBean studentBean = null;
/* 表名 */
public final static String TABLE_NAME = "stu";
/* 表对应的字段 */
public final static String STU_ID = "id";
public final static String STU_NAME = "name";
/* 单例模式 */
public static StudentBean getInstance() {
if (null == studentBean) {
studentBean = new StudentBean();
}
return studentBean;
}
/* DDL操作 */
// 创建表结构SQL
public String sql$createTable() {
return "create table if not exists stu(id integer primary key,name text)";
}
// 删除表结构SQL
public String sql$dropTable() {
return "drop table if exists stu(id integer primary key,name text)";
}
/* DML操作 */
/* 插入 */
public long save(DBHelper dbHelper, ContentValues values) {
dbHelper.open();
long size = dbHelper.insert(TABLE_NAME, values);
dbHelper.close();
return size;
}
/**
*
* 更新
*
* @param dbHelper
* @param oldValues 一般为Map,可根据自己的实际情况调整
* @param newValues 一般为String[],可根据自己的实际情况调整
* @return 更新的记录
*
*/
public long update(DBHelper dbHelper, HashMap<String, Object> oldValues, String[] newValues) {
dbHelper.open();
ContentValues values = new ContentValues();
values.put(STU_NAME, newValues[0]);
long size = dbHelper.update(TABLE_NAME, "id=?", new String[] { oldValues.get(STU_ID).toString() }, values);
dbHelper.close();
return size;
}
/* 删除 */
public long delete(DBHelper dbHelper, String whereArs, HashMap<String, Object> values) {
return 0;
}
/* 获取数据库集合数据 */
public List<HashMap<String, Object>> findList(DBHelper dbHelper) {
dbHelper.open();
Cursor cursor = dbHelper.findList(TABLE_NAME, null, null, null, null, null, null, null);
List list = cursor2List(cursor);
dbHelper.close();
return list;
}
/* 游标转换为集合 */
private List<HashMap<String, Object>> cursor2List(Cursor cursor) {
List list = new ArrayList<HashMap<String, Object>>();
/* 有记录 */
while (cursor.moveToNext()) {
HashMap<String, Object> map = new HashMap<String, Object>();
int id = cursor.getInt(cursor.getColumnIndex(STU_ID));
String name = cursor.getString(cursor.getColumnIndex(STU_NAME));
map.put(STU_ID, id);
map.put(STU_NAME, name);
list.add(map);
}
return list;
}
}
--------------------------------------------效果----------------------------------------------------
添加数据
修改数据
评论
private static StudentBean studentBean = null;
/* 表名 */
public final static String TABLE_NAME = "stu";
/* 表对应的字段 */
public final static String STU_ID = "id";
public final static String STU_NAME = "name";
/* 单例模式 */
public static StudentBean getInstance() {
if (null == studentBean) {
studentBean = new StudentBean();
}
return studentBean;
}
StudentBean 类没有将默认的构造方法显式设置为private 还能叫做单例模式吗????
发表评论
-
史上最快 Android N(安卓7.0)运行效率暴增至600%
2016-10-15 10:08 928谷歌I/O 2016开发者大会在公司总部正式拉开 ... -
So Easy京东商城
2014-12-10 16:51 1578So Easy京东商城 我和17位小伙伴们 ... -
过期Gallery取代方案horizontalscrollView之菜单导航效果
2014-03-23 16:19 2413效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之京东效果
2014-03-23 15:57 3880效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之幻灯片效果
2014-03-21 17:33 2621效果 ------------------------- ... -
tabhostandbadgeview
2014-03-19 13:45 1034效果 -------------------------- ... -
Android优秀开源项目大全
2014-03-18 15:17 1983以下是开源项目 1、and ... -
Android分页控件xlistview
2014-03-18 14:51 1673strings.xml ----------------- ... -
过期Gallery取代方案horizontalscrollView之普通画廊
2014-03-17 22:48 2442activity_main.xml ---------- ... -
viewpage
2014-03-17 18:08 1059strings.xml ----------------- ... -
FragmentStatePagerAdapter分页
2014-03-17 17:27 806ViewPager ViewPager 如 ... -
FragmentPagerAdapter与FragmentStatePagerAdapter差异
2014-03-17 17:20 1317简介 平常使用的FragmentPagerAdapter和F ... -
抽屉菜单
2014-03-16 12:51 1843strings.xml ----------------- ... -
px和dip以及sp的区别
2014-03-08 17:01 717显示单位px和dip以及sp的区别 dip: devi ... -
fragment生命周期
2014-03-06 16:59 890Fragment必须被写成可重用的模块。因为fragmen ... -
过期API_AlertDialog
2014-03-02 10:07 1151layout----------------------- ... -
Android_Jni 操作指南
2014-01-10 14:45 948Android_Jni 操作指南 NDK(Nati ... -
各种各样圆形进度条
2013-11-11 16:30 563http://www.apkbus.com/android-1 ... -
红杏出墙__实训版
2013-04-20 18:59 1082红杏出墙__实训版 -
google地图demo
2013-04-09 14:25 3202---------------------------- ...
相关推荐
《Android SDK开发范例大全(第二版)CH05》是针对Android应用开发的一份重要资源,由清华大学出版社出版。这个压缩包包含了第五章的源代码,为开发者提供了丰富的实践示例,帮助深入理解Android SDK的使用。在这个...
《疯狂Android讲义(第2版)》是Android开发领域一本知名的教材,它深入浅出地介绍了Android应用开发的各种技术和实践。源码ch04-06涵盖了书中的第四至第六章,这部分内容通常会涉及Android开发的基础知识,包括用户...
3. **数据存储**:Android提供了SQLite数据库、SharedPreferences、文件系统以及ContentProvider等多种数据存储方式。开发者可能通过例子学习如何读写数据库,管理用户偏好设置,以及与文件系统交互。 4. **Android...
《疯狂Android讲义(第2版)》是李刚老师撰写的一本深入解析Android开发的经典教程,这本书以其详尽的讲解和丰富的实例深受广大开发者喜爱。源码ch11-14涵盖了书中第11至14章的内容,这部分主要涉及Android应用开发中...
《疯狂Android讲义(第2版)》是著名Android开发者李刚老师撰写的一本深入浅出的Android开发教程,此源码包包含了该书第二章“Android基础组件”中的部分内容,具体为章节6至11的实践代码。通过这些源码,我们可以深入...
《Android SDK开发范例大全第二版》是一本深入讲解Android应用程序开发的专业书籍,包含了丰富的实践案例,旨在帮助开发者全面理解并掌握Android SDK的使用。这个压缩包提供了书中的所有源码,便于读者在实践中学习...
《Android SDK开发范例大全(第二版)CH03》是针对Android应用程序开发的一本详尽教程,由清华大学出版社出版。这本书的第三章涵盖了Android SDK中的关键知识点,旨在帮助开发者深入理解和实践Android应用的构建过程。...
《Android SDK开发范例大全(第二版)CH06》是一个关于Android开发的章节资源,主要聚焦于SDK的使用和实战技巧。这个压缩包可能包含了该章节的所有代码示例、讲解文档和其他相关材料,帮助开发者深入理解Android应用...
《疯狂Android讲义(第2版)》是李刚老师撰写的一本深入讲解Android开发的经典教程,这本书的源代码涵盖了第15至19章的内容。这些章节主要讲解了Android应用开发中的高级技术和实践,包括UI设计、多线程、网络编程、...
《Android SDK开发范例大全(第二版)CH08》是一个关于Android应用程序开发的压缩包,专注于SDK的第八章内容。这一章可能涵盖了Android开发中的关键概念和技术,旨在帮助开发者深入理解和实践Android平台的编程。 在...
在CH04这个目录下,我们可以预期找到与第四章内容相关的源码,这通常会涵盖以下关键知识点: 1. **活动(Activity)管理**:Activity是Android应用的基本构建块,用于展示用户界面。源码可能会包含如何创建、启动、...
源码ch2-ch6”提供了一系列从第二章到第六章的源码示例,旨在帮助开发者深入理解和实践SDK中的各种功能和API。 首先,让我们探讨一下SDK中的核心组件和概念: 1. **AndroidManifest.xml**:这是每个Android应用的...
《Android SDK开发范例大全(第二版)CH09》是一个关于Android应用程序开发的资源压缩包,主要聚焦在SDK的第九章内容。Android SDK是Android应用开发者的重要工具集,它包含了构建、测试和调试Android应用所需的所有...
《Android SDK范例开发大全 第3版 源代码 CH7》是一本专注于Android应用程序开发的实战指南,其中包含了丰富的示例代码,旨在帮助开发者深入理解Android SDK的各种功能和使用方法。这部分源代码主要聚焦于第7章的...
《Android Ophone开发完全讲义源码》涵盖了从基础到进阶的Android应用程序开发知识,主要涉及了第2章至第8章的内容。这个压缩包包含的子文件按章节顺序排列,分别是ch02、ch07、ch06、ch04、ch02(可能是重复或错误...
2. Android应用开发基础:书中从第二章开始介绍Android应用的基本结构,包括主Activity、布局文件、XML资源、Intent等。开发者可以通过源代码学习如何创建一个简单的Android应用,理解Activity生命周期和Intent的...
1. **Android开发基础**(ch_01android开发基础.ppt):这部分内容通常会介绍Android平台的概述,包括Android系统架构、开发环境的搭建(如安装Android Studio和SDK)、以及编写第一个Hello World应用程序。...
在本章“ch03”中,我们将探索Android应用的基础架构,包括Activity、Intent、BroadcastReceiver以及Service等核心组件。这些组件构成了Android应用的核心功能,理解和掌握它们对于任何Android开发者来说都是至关...
2. **CH04**: 可能涉及的是Android的数据存储,包括SQLite数据库的使用、SharedPreferences的读写以及文件操作。开发者可以学习如何在应用中持久化数据,以便在应用重启后仍能保留信息。 3. **CH05**: 这部分可能...
《Google Android SDK 开发范例大全(第2版)》是一部深入浅出的Android开发教程,其中光盘内容包括了第3至6章的实践示例代码,这四个章节覆盖了Android开发的关键技术与概念。这里我们将分别探讨这四个章节的重点...