- 浏览: 384602 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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----------------------------------
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kawa.ch23"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner"/>
<activity
android:label="@string/app_name"
android:name=".MainActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider
android:authorities="com.kawa.ch23.provider.myprovider"
android:name=".provider.MyProvider" >
</provider>
<activity android:name="com.kawa.ch23.ItemActivity"></activity>
</application>
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.kawa.ch23" android:label="Tests for My App" />
</manifest>
--------------------------------------------Layout activity_main.java----------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1" >
<TableRow >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名" />
<EditText
android:id="@+id/edtname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="fy"/>
</TableRow>
<TableRow >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="年龄" />
<EditText
android:id="@+id/edtage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="21"/>
</TableRow>
</TableLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/btnadd"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="新增" />
<Button
android:id="@+id/btnqueryall"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="查询所有" />
</LinearLayout>
<ListView
android:id="@+id/lvall"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
--------------------------------------------Layout item.xml--------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1" >
<TableRow >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ID" />
<EditText
android:id="@+id/edt_item_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</TableRow>
<TableRow >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名" />
<EditText
android:id="@+id/edt_item_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</TableRow>
<TableRow >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="年龄" />
<EditText
android:id="@+id/edt_item_age"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</TableRow>
</TableLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/btndel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="删除" />
<Button
android:id="@+id/btnupdate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="更新" />
</LinearLayout>
</LinearLayout>
--------------------------------------------Layout list_item.xml----------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/tvId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<TextView
android:id="@+id/tvname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:id="@+id/tvage"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
--------------------------------------------MainActivity.java--------------------------------------
package com.kawa.ch23;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.kawa.ch23.model.Person;
import com.kawa.ch23.util.Const;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
/**
*
* 项目名称:com.kawa.ch23
* 类名称:MainActivity
* 类描述:
* 创建人:方勇
* 创建时间:2012-12-14 下午9:38:39
* Copyright (c) 方勇-版权所有
*/
public class MainActivity extends Activity {
private Button btn_add, btn_queryall;
private EditText field_name, field_age;
private ListView listview;
private List<Person> persons;
private SimpleAdapter simpleAdapter;
private Handler handler = new Handler() {//异步消息
@Override
public void handleMessage(Message msg) {
List<Map<String, Object>> data = (List<Map<String, Object>>) msg.obj;
System.out.println(data.size());
simpleAdapter = new SimpleAdapter(MainActivity.this, data,
R.layout.list_item, new String[] { "id", "name", "age" }, new int[] {
R.id.tvId, R.id.tvname, R.id.tvage });
listview.setAdapter(simpleAdapter);
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
persons = new ArrayList<Person>();
findViews();
setListeners();
}
private void findViews() {
btn_queryall = (Button) this.findViewById(R.id.btnqueryall);
btn_add = (Button) this.findViewById(R.id.btnadd);
field_name = (EditText) this.findViewById(R.id.edtname);
field_age = (EditText) this.findViewById(R.id.edtage);
listview = (ListView) this.findViewById(R.id.lvall);
}
private void setListeners() {
btn_add.setOnClickListener(addOnClickListener);
// 查询所有
btn_queryall.setOnClickListener(queryOnClickListener);
listview.setOnItemClickListener(onItemClickListener);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == 2) {
MyThread thread = new MyThread(MainActivity.this);
thread.start();
}
}
private OnClickListener addOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
ContentResolver contentResolver = MainActivity.this
.getContentResolver();
Uri url = Uri.parse("content://"+Const.PROVIDER_URL+"/person");
ContentValues values = new ContentValues();
values.put("name", field_name.getText().toString());
values.put("age", field_age.getText().toString());
Uri result = contentResolver.insert(url, values);
System.out.println(result.toString());
if (ContentUris.parseId(result) > 0) {
Toast.makeText(MainActivity.this, "添加成功",
Toast.LENGTH_LONG).show();
// 添加成功后再启动线程查询
MyThread thread = new MyThread(MainActivity.this);
thread.start();
}
}
};
private OnClickListener queryOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
MyThread thread = new MyThread(MainActivity.this);
thread.start();
}
};
private OnItemClickListener onItemClickListener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
System.out.println("position:" + position);
Person person = persons.get(position);
Bundle bundle = new Bundle();
bundle.putInt("id", person.getId());
bundle.putString("name", person.getName());
bundle.putInt("age", person.getAge());
Intent intent = new Intent(MainActivity.this,
ItemActivity.class);
intent.putExtra("item", bundle);
startActivityForResult(intent, 1);
}
};
class MyThread extends Thread {
Context context;
public MyThread(Context context) {
// 一定要清空。否则会 有问题,每执行一次都会把之前的全部的item加进去
persons.clear();
listview.setAdapter(null);
this.context = context;
}
@Override
public void run() {
Uri url = Uri.parse("content://"+Const.PROVIDER_URL+"/person");
Cursor cursor = context.getContentResolver().query(url,
new String[] { "_id", "name", "age" }, null, null, "_id");
while (cursor.moveToNext()) {
Person person = new Person();
person.setId(cursor.getInt(cursor.getColumnIndex("_id")));
person.setName(cursor.getString(cursor.getColumnIndex("name")));
person.setAge(cursor.getInt(cursor.getColumnIndex("age")));
persons.add(person);
}
cursor.close();
List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
Map<String, Object> map = null;
for (int i = 0; i < persons.size(); i++) {
map = new HashMap<String, Object>();
map.put("id", persons.get(i).getId());
map.put("name", persons.get(i).getName());
map.put("age", persons.get(i).getAge());
data.add(map);
}
Message msg = handler.obtainMessage();
msg.obj = data;
handler.sendMessage(msg);
}
}
}
--------------------------------------------ItemActivity.java--------------------------------------
package com.kawa.ch23;
import com.kawa.ch23.util.Const;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
/**
*
* 项目名称:com.kawa.ch23
* 类名称:ItemActivity
* 类描述:
* 创建人:方勇
* 创建时间:2012-12-14 下午9:45:04
* Copyright (c) 方勇-版权所有
*/
public class ItemActivity extends Activity {
private EditText field_name;
private EditText field_age;
private EditText field_id;
private Button btn_del, btn_update;
// 传数据
private Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.item);
findViews();
setListeners();
intent = getIntent();
Bundle bundle = intent.getBundleExtra("item");//选中的数据
int id = bundle.getInt("id");
String name = bundle.getString("name");
int age = bundle.getInt("age");
field_id.setText(String.valueOf(id));
field_name.setText(name);
field_age.setText(String.valueOf(age));
}
private void findViews() {
field_id = (EditText) this.findViewById(R.id.edt_item_id);
field_id.setEnabled(false);// 控制不可用
field_name = (EditText) this.findViewById(R.id.edt_item_name);
field_age = (EditText) this.findViewById(R.id.edt_item_age);
// 得到传过来的数据
btn_del = (Button) this.findViewById(R.id.btndel);
btn_update = (Button) this.findViewById(R.id.btnupdate);
}
private void setListeners() {
btn_del.setOnClickListener(delOnClickListener);
btn_update.setOnClickListener(updateOnClickListener);
}
private OnClickListener updateOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
ContentResolver contentResolver = ItemActivity.this.getContentResolver();
// 构建Uri
String url = "content://"+Const.PROVIDER_URL+"/person/"
+ field_id.getText();
Uri uri = Uri.parse(url);
ContentValues values = new ContentValues();
values.put("name", field_name.getText().toString());
values.put("age", Integer.parseInt(field_age.getText().toString()));
int result = contentResolver.update(uri, values, null, null);
System.out.println("update result:" + result);
if (result >= 1) {
Toast.makeText(ItemActivity.this, "更新成功", Toast.LENGTH_LONG).show();
ItemActivity.this.setResult(2);//设置返回结果
ItemActivity.this.finish();//销毁
}
}
};
private OnClickListener delOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
ContentResolver contentResolver = ItemActivity.this.getContentResolver();
// 构建Uri
String url = "content://"+Const.PROVIDER_URL+"/person/"
+ field_id.getText();
Uri uri = Uri.parse(url);
int result = contentResolver.delete(uri, null, null);
System.out.println("delete result:" + result);
if (result >= 1) {
Toast.makeText(ItemActivity.this, "删除成功", Toast.LENGTH_LONG).show();
ItemActivity.this.setResult(2);
ItemActivity.this.finish();//销毁
}
}
};
}
--------------------------------------------util目录 Const.java-----------------------------------
public class Const {
public static String PROVIDER_URL = "com.kawa.ch23.provider.myprovider";
}
--------------------------------------------provider目录 MyProvider.java-----------------------
package com.kawa.ch23.provider;
import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.net.Uri;
import com.kawa.ch23.db.DBHelper;
import com.kawa.ch23.util.Const;
/**
*
* 项目名称:com.kawa.ch23
* 类名称:MyProvider
* 类描述:提供者
* 创建人:方勇
* 创建时间:2012-12-14 下午9:49:38
* Copyright (c) 方勇-版权所有
*/
public class MyProvider extends ContentProvider {
private DBHelper dbHelper;
// 定义一个UriMatcher类
private static final UriMatcher MATCHER = new UriMatcher(
UriMatcher.NO_MATCH);
private static final int PERSONS = 1;
private static final int PERSON = 2;
static {
MATCHER.addURI(Const.PROVIDER_URL, "person", PERSONS);
MATCHER.addURI(Const.PROVIDER_URL, "person/#", PERSON);
}
@Override
public boolean onCreate() {
System.out.println("---oncreate----");
dbHelper = new DBHelper(this.getContext());
dbHelper.open();
return false;
}
// 查询数据
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
switch (MATCHER.match(uri)) {
case PERSONS:
// 查询所有的数据
return dbHelper.findList("person", projection, selection, selectionArgs,
null, null, sortOrder);
case PERSON:
// 查询某个ID的数据
// 通过ContentUris这个工具类解释出ID
long id = ContentUris.parseId(uri);
String where = " _id=" + id;
if (!"".equals(selection) && selection != null) {
where = selection + " and " + where;
}
return dbHelper.findList("person", projection, where, selectionArgs, null,
null, sortOrder);
default:
throw new IllegalArgumentException("unknow uri" + uri.toString());
}
}
// 返回当前操作的数据的mimeType
@Override
public String getType(Uri uri) {
switch (MATCHER.match(uri)) {
case PERSONS:
return "vnd.android.cursor.dir/person";
case PERSON:
return "vnd.android.cursor.item/person";
default:
throw new IllegalArgumentException("Unkwon Uri:" + uri.toString());
}
}
// 插入数据
@Override
public Uri insert(Uri uri, ContentValues values) {
Uri insertUri = null;
switch (MATCHER.match(uri)) {
case PERSONS:
long rowid = dbHelper.insert("person", values);
insertUri = ContentUris.withAppendedId(uri, rowid);
break;
default:
throw new IllegalArgumentException("Unkwon Uri:" + uri.toString());
}
return insertUri;
}
// 删除数据
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int count = 0;
switch (MATCHER.match(uri)) {
case PERSONS:
count = dbHelper.delete("person", selection, selectionArgs);
return count;
case PERSON:
long id = ContentUris.parseId(uri);
String where = "_id=" + id;
if (selection != null && !"".equals(selection)) {
where = selection + " and " + where;
}
count = dbHelper.delete("person", where, selectionArgs);
return count;
default:
throw new IllegalArgumentException("Unkwon Uri:" + uri.toString());
}
}
// 更新数据
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
int count = 0;
switch (MATCHER.match(uri)) {
case PERSONS:
count = dbHelper.update("person", values, selection, selectionArgs);
break;
case PERSON:
// 通过ContentUri工具类得到ID
long id = ContentUris.parseId(uri);
String where = "_id=" + id;
if (selection != null && !"".equals(selection)) {
where = selection + " and " + where;
}
count = dbHelper.update("person", values, where, selectionArgs);
break;
default:
throw new IllegalArgumentException("Unkwon Uri:" + uri.toString());
}
return count;
}
}
--------------------------------------------provider目录 Test.java-------------------------------
package com.kawa.ch23.provider;
import com.kawa.ch23.util.Const;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.test.AndroidTestCase;
public class Test extends AndroidTestCase {
/*保存*/
public void testInsert() throws Exception {
ContentResolver contentResolver = this.getContext()
.getContentResolver();
Uri url = Uri.parse("content://"+Const.PROVIDER_URL+"/person");
ContentValues values = new ContentValues();
values.put("name", "jiahui2");
values.put("age", 20);
contentResolver.insert(url, values);
}
/*删除*/
public void testDelete() throws Exception{
ContentResolver contentResolver = this.getContext()
.getContentResolver();
Uri url = Uri.parse("content://"+Const.PROVIDER_URL+"/person/1");
//ContentValues values = new ContentValues();
contentResolver.delete(url, null, null);
}
/*更新*/
public void testUpdate() throws Exception {
ContentResolver contentResolver = this.getContext()
.getContentResolver();
Uri url = Uri.parse("content://"+Const.PROVIDER_URL+"/person/1");
ContentValues values = new ContentValues();
values.put("name", "jiahui2");
values.put("age", 20);
contentResolver.update(url, values, null,null);
}
/*查询*/
public void testQuery() throws Exception {
ContentResolver contentResolver = this.getContext()
.getContentResolver();
Uri url = Uri.parse("content://"+Const.PROVIDER_URL+"/person");
Cursor cursor = contentResolver.query(url, new String[] { "_id",
"name", "age" }, null, null, "_id");
while (cursor.moveToNext()) {
System.out.println("_id:"+cursor.getInt(cursor.getColumnIndex("_id")));
System.out.println("name:"+cursor.getString(cursor.getColumnIndex("name")));
System.out.println("age:"+cursor.getInt(cursor.getColumnIndex("age")));
}
}
}
--------------------------------------------model目录 Person.java-------------------------------
package com.kawa.ch23.model;
import java.io.Serializable;
public class Person implements Serializable{
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
--------------------------------------------db目录 DBHelper.java--------------------------------
package com.kawa.ch23.db;
import com.kawa.ch23.util.LogOut;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
*
* 项目名称:com.kawa.ch21
*
* 类名称:DBHelper
*
* 类描述:Sqlite3数据库操作工具类
*
* 创建人:fy
*
* 创建时间:2012-9-7 上午9:27:24
*
* Copyright (c) 方勇-版权所有
*/
public class DBHelper {
// DDL操作
private static DatabaseHelper dbHelper;
// DML操作
private static SQLiteDatabase db;
// 数据库名
private static final String DATABASE_NAME = "kawa.db";
// 数据库版本
private static final int DATABASE_VERSION = 1;
// 上下文环境
private final Context mCtx;
/* SQliteOpenHelper是一个抽象类,来管理数据库的创建和版本的管理 */
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table IF NOT EXISTS person (_id integer primary key autoincrement, name text,age integer)";
LogOut.out("fy", "sql[" + sql + "]");
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
System.out.println("upgrade a database");
}
}
public DBHelper(Context ctx) {
this.mCtx = ctx;
}
public DBHelper open() throws SQLException {
dbHelper = new DatabaseHelper(mCtx);
db = dbHelper.getWritableDatabase();
return this;
}
public void closeclose() {
db.close();
dbHelper.close();
}
/**
* 插入数据
* 参数:tableName 表名
* initialValues 要插入的列对应值
* */
public long insert(String tableName, ContentValues initialValues) {
return db.insert(tableName, null, initialValues);
}
/**
* 删除数据
* 参数:tableName 表名
* deleteCondition 删除的条件
* deleteArgs 如果deleteCondition中有“?”号,将用此数组中的值替换
* */
public int delete(String tableName, String deleteCondition,
String[] deleteArgs) {
return db.delete(tableName, deleteCondition, deleteArgs) ;
}
/**
* 更新数据
* 参数:tableName 表名
* initialValues 要更新的列
* selection 更新的条件
* selectArgs 如果selection中有“?”号,将用此数组中的值替换
* */
public int update(String tableName, ContentValues initialValues,
String selection, String[] selectArgs) {
int returnValue = db
.update(tableName, initialValues, selection, selectArgs);
return returnValue ;
}
/**
* 取得一个列表
* 参数:tableName 表名
* columns 返回的列
* selection 查询条件
* selectArgs 如果selection中有“?”号,将用此数组中的值替换
* */
public Cursor findList(String tableName, String[] columns, String selection,
String[] selectionArgs, String groupBy, String having, String orderBy) {
return db.query(tableName, columns, selection, selectionArgs, groupBy,
having, orderBy);
}
}
--------------------------------------------结果----------------------------------------------------
发表评论
-
史上最快 Android N(安卓7.0)运行效率暴增至600%
2016-10-15 10:08 922谷歌I/O 2016开发者大会在公司总部正式拉开 ... -
So Easy京东商城
2014-12-10 16:51 1573So Easy京东商城 我和17位小伙伴们 ... -
过期Gallery取代方案horizontalscrollView之菜单导航效果
2014-03-23 16:19 2411效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之京东效果
2014-03-23 15:57 3877效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之幻灯片效果
2014-03-21 17:33 2620效果 ------------------------- ... -
tabhostandbadgeview
2014-03-19 13:45 1027效果 -------------------------- ... -
Android优秀开源项目大全
2014-03-18 15:17 1979以下是开源项目 1、and ... -
Android分页控件xlistview
2014-03-18 14:51 1663strings.xml ----------------- ... -
过期Gallery取代方案horizontalscrollView之普通画廊
2014-03-17 22:48 2440activity_main.xml ---------- ... -
viewpage
2014-03-17 18:08 1052strings.xml ----------------- ... -
FragmentStatePagerAdapter分页
2014-03-17 17:27 800ViewPager ViewPager 如 ... -
FragmentPagerAdapter与FragmentStatePagerAdapter差异
2014-03-17 17:20 1311简介 平常使用的FragmentPagerAdapter和F ... -
抽屉菜单
2014-03-16 12:51 1840strings.xml ----------------- ... -
px和dip以及sp的区别
2014-03-08 17:01 713显示单位px和dip以及sp的区别 dip: devi ... -
fragment生命周期
2014-03-06 16:59 888Fragment必须被写成可重用的模块。因为fragmen ... -
过期API_AlertDialog
2014-03-02 10:07 1147layout----------------------- ... -
Android_Jni 操作指南
2014-01-10 14:45 946Android_Jni 操作指南 NDK(Nati ... -
各种各样圆形进度条
2013-11-11 16:30 560http://www.apkbus.com/android-1 ... -
红杏出墙__实训版
2013-04-20 18:59 1080红杏出墙__实训版 -
google地图demo
2013-04-09 14:25 3201---------------------------- ...
相关推荐
4. **CH341驱动**:如果CH341指的是硬件接口,那么这部分代码可能涉及到Android的硬件抽象层(HAL)或者设备驱动程序开发,用于与特定硬件交互。 5. **权限管理**:Android系统有严格的权限控制,如果代码涉及到...
《疯狂Android讲义(第2版)》是Android开发领域一本知名的教材,它深入浅出地介绍了Android应用开发的各种技术和实践。源码ch04-06涵盖了书中的第四至第六章,这部分内容通常会涉及Android开发的基础知识,包括用户...
《Android SDK开发范例大全第二版》是一本深入讲解Android应用程序开发的专业书籍,包含了丰富的实践案例,旨在帮助开发者全面理解并掌握Android SDK的使用。这个压缩包提供了书中的所有源码,便于读者在实践中学习...
1. **Android开发基础**(ch_01android开发基础.ppt):这部分内容通常会介绍Android平台的概述,包括Android系统架构、开发环境的搭建(如安装Android Studio和SDK)、以及编写第一个Hello World应用程序。...
《Android SDK开发范例大全(第二版)CH03》是针对Android应用程序开发的一本详尽教程,由清华大学出版社出版。这本书的第三章涵盖了Android SDK中的关键知识点,旨在帮助开发者深入理解和实践Android应用的构建过程。...
《Android开发权威指南(第二版)》是一本深入讲解Android应用程序开发的专业书籍,其源代码提供了丰富的实践示例,帮助开发者深入理解Android平台的工作机制。这些源代码分布在不同的章节文件夹中,包括ch29、ch20...
《Android SDK开发范例大全(第二版)CH06》是一个关于Android开发的章节资源,主要聚焦于SDK的使用和实战技巧。这个压缩包可能包含了该章节的所有代码示例、讲解文档和其他相关材料,帮助开发者深入理解Android应用...
《疯狂Android讲义(第2版)》是李刚老师撰写的一本深入讲解Android开发的经典教程,这本书以其详实的内容和实战导向深受开发者喜爱。在第2章中,作者主要探讨了Android的基础知识和核心概念,为后续章节的学习打下...
《Android Ophone开发完全讲义源码》涵盖了从基础到进阶的Android应用程序开发知识,主要涉及了第2章至第8章的内容。这个压缩包包含的子文件按章节顺序排列,分别是ch02、ch07、ch06、ch04、ch02(可能是重复或错误...
《疯狂Android讲义(第2版)》是李刚老师撰写的一本深入讲解Android开发的经典教程,这本书的源代码涵盖了第15至19章的内容。这些章节主要讲解了Android应用开发中的高级技术和实践,包括UI设计、多线程、网络编程、...
《Android Ophone开发完全讲义源码Ch12》是一份深入探讨Android Ophone平台开发的教程资料,其中包含了第十二章的完整源代码。这一章的焦点可能集中在特定的开发主题上,如应用程序框架、用户界面设计、系统服务集成...
源码ch2-ch6”提供了一系列从第二章到第六章的源码示例,旨在帮助开发者深入理解和实践SDK中的各种功能和API。 首先,让我们探讨一下SDK中的核心组件和概念: 1. **AndroidManifest.xml**:这是每个Android应用的...
《Android SDK开发范例大全(第二版)CH09》是一个关于Android应用程序开发的资源压缩包,主要聚焦在SDK的第九章内容。Android SDK是Android应用开发者的重要工具集,它包含了构建、测试和调试Android应用所需的所有...
《Android SDK范例开发大全 第3版 源代码 CH8》是一本专注于Android应用程序开发的实战指南,其中包含了丰富的示例代码,旨在帮助开发者深入理解Android SDK的各种功能和使用方法。这部分源代码对应的是书中的第八章...
本讲义的第二章,"android ophone开发完全讲义源码ch02",将带你走进Android Ophone的世界,揭示其核心原理与开发技巧。 首先,Android Ophone是基于Android操作系统为中国移动定制的一个智能手机平台,它融合了...
在Android Ophone开发中,Chapter 6(ch06)通常涵盖了系统架构、应用程序组件、UI设计、数据存储以及网络通信等关键知识点。这个压缩包可能包含了一系列的代码示例、教程文档或项目实例,旨在帮助开发者深入理解...
6. **CH03**和**CH06_part1**: 这两个章节可能分别介绍了Android应用的基础架构和部分高级主题,例如广播接收器(BroadcastReceiver)、内容提供者(ContentProvider)或者Intent的使用,这些都是Android组件模型的...
《Android OPhone开发完全讲义源码Ch04》是一份深入探讨Android OPhone平台开发的教程资料,其中包含了第四章的源代码。这一章节主要聚焦于Android应用程序的架构、UI设计以及与设备硬件交互的基础知识。在Android ...
《Android Ophone开发完全讲义源码Ch24》是一份深入探讨Android Ophone平台开发的教程资料,其中包含了第24章的源代码。在这一章节中,开发者将了解到如何在Android Ophone环境下进行应用的构建、调试以及优化。...
在本章“ch03”中,我们将探索Android应用的基础架构,包括Activity、Intent、BroadcastReceiver以及Service等核心组件。这些组件构成了Android应用的核心功能,理解和掌握它们对于任何Android开发者来说都是至关...