diff --git a/README.md b/README.md
index 612167f..c36dbe5 100644
--- a/README.md
+++ b/README.md
@@ -1,289 +1,2 @@
-#afinal交流平台
-* QQ群:192341294(群1,2000未满) 246710918(群2,1000未满)
-* 网址:[http://www.afinal.org](http://www.afinal.org)
-
-
-----
-#  Afinal简介
-* Afinal 是一个android的sqlite orm 和 ioc 框架。同时封装了android中的http框架,使其更加简单易用;
-* 使用finalBitmap,无需考虑bitmap在android中加载的时候oom的问题和快速滑动的时候图片加载位置错位等问题。
-* Afinal的宗旨是简洁,快速。约定大于配置的方式。尽量一行代码完成所有事情。
-
-
-##目前Afinal主要有四大模块:
-
-* FinalDB模块:android中的orm框架,一行代码就可以进行增删改查。支持一对多,多对一等查询。
-
-* FinalActivity模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。
-
-* FinalHttp模块:通过httpclient进行封装http数据请求,支持ajax方式加载。
-
-* FinalBitmap模块:通过FinalBitmap,imageview加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。FinalBitmap可以配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等。FinalBitmap的内存管理使用lru算法,没有使用弱引用(android2.3以后google已经不建议使用弱引用,android2.3后强行回收软引用和弱引用,详情查看android官方文档),更好的管理bitmap内存。FinalBitmap可以自定义下载器,用来扩展其他协议显示网络图片,比如ftp等。同时可以自定义bitmap显示器,在imageview显示图片的时候播放动画等(默认是渐变动画显示)。
-
-
----
-## 使用afinal快速开发框架需要有以下权限:
-
-```xml
-
-
-```
-* 第一个是访问网络
-* 第二个是访问sdcard
-* 访问网络是请求网络图片的时候需要或者是http数据请求时候需要,访问sdcard是图片缓存的需要。
-
-----
-##FinalDB使用方法:
-关于finalDb的更多介绍,请点击[这里](http://my.oschina.net/yangfuhai/blog/87459)
-
-```java
-FinalDb db = FinalDb.create(this);
-User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性
-user.setEmail("mail@tsz.net");
-user.setName("michael yang");
-db.save(user);
-```
-
-----
-##FinalDB OneToMany懒加载使用方法:
-模型定义:
-```java
-public class Parent{
- private int id;
- @OneToMany(manyColumn = "parentId")
- private OneToManyLazyLoader children;
- /*....*/
-}
-public class Child{
- private int id;
- private String text;
- @ManyToOne(column = "parentId")
- private Parent parent;
- /*....*/
-}
-```
-使用:
-```java
-List all = db.findAll(Parent.class);
- for( Parent item : all){
- if(item.getChildren ().getList().size()>0)
- Toast.makeText(this,item.getText() + item.getChildren().getList().get(0).getText(),Toast.LENGTH_LONG).show();
- }
-```
-----
-##FinalActivity使用方法:
-* 完全注解方式就可以进行UI绑定和事件绑定
-* 无需findViewById和setClickListener等
-
-```java
-public class AfinalDemoActivity extends FinalActivity {
-
- //无需调用findViewById和setOnclickListener等
- @ViewInject(id=R.id.button,click="btnClick") Button button;
- @ViewInject(id=R.id.textView) TextView textView;
-
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- }
-
- public void btnClick(View v){
- textView.setText("text set form button");
- }
-}
-```
-*在其他侵入式框架下使用(如ActionBarShelock)
-```java
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(view);
- FinalActivity.initInjectedView(this);
- }
-```
-*在Fragment中使用
-```java
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View viewRoot = inflater.inflate(R.layout.map_frame, container, false);
- FinalActivity.initInjectedView(this,viewRoot);
- }
-```
-##FinalHttp使用方法:
-###普通get方法
-
-```java
-FinalHttp fh = new FinalHttp();
-fh.get("http://www.yangfuhai.com", new AjaxCallBack(){
-
- @Override
- public void onLoading(long count, long current) { //每1秒钟自动被回调一次
- textView.setText(current+"/"+count);
- }
-
- @Override
- public void onSuccess(String t) {
- textView.setText(t==null?"null":t);
- }
-
- @Override
- public void onStart() {
- //开始http请求的时候回调
- }
-
- @Override
- public void onFailure(Throwable t, String strMsg) {
- //加载失败的时候回调
- }
-});
-```
-
-### 使用FinalHttp上传文件 或者 提交数据 到服务器(post方法)
-文件上传到服务器,服务器如何接收,请查看[这里](http://www.oschina.net/question/105836_85825)
-
-```java
- AjaxParams params = new AjaxParams();
- params.put("username", "michael yang");
- params.put("password", "123456");
- params.put("email", "test@tsz.net");
- params.put("profile_picture", new File("/mnt/sdcard/pic.jpg")); // 上传文件
- params.put("profile_picture2", inputStream); // 上传数据流
- params.put("profile_picture3", new ByteArrayInputStream(bytes)); // 提交字节流
-
- FinalHttp fh = new FinalHttp();
- fh.post("http://www.yangfuhai.com", params, new AjaxCallBack(){
- @Override
- public void onLoading(long count, long current) {
- textView.setText(current+"/"+count);
- }
-
- @Override
- public void onSuccess(String t) {
- textView.setText(t==null?"null":t);
- }
- });
-```
-
-
-----
-
-###使用FinalHttp下载文件:
-* 支持断点续传,随时停止下载任务 或者 开始任务
-
-```java
- FinalHttp fh = new FinalHttp();
- //调用download方法开始下载
- HttpHandler handler = fh.download("http://www.xxx.com/下载路径/xxx.apk", //这里是下载的路径
- true,//true:断点续传 false:不断点续传(全新下载)
- "/mnt/sdcard/testapk.apk", //这是保存到本地的路径
- new AjaxCallBack() {
- @Override
- public void onLoading(long count, long current) {
- textView.setText("下载进度:"+current+"/"+count);
- }
-
- @Override
- public void onSuccess(File t) {
- textView.setText(t==null?"null":t.getAbsoluteFile().toString());
- }
-
- });
-
-
- //调用stop()方法停止下载
- handler.stop();
-
-
-```
-
-
-##FinalBitmap 使用方法
-加载网络图片就一行代码 fb.display(imageView,url) ,更多的display重载请看[帮助文档](https://github.com/yangfuhai/afinal/tree/master/doc)
-
-```java
-private GridView gridView;
- private FinalBitmap fb;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.images);
-
- gridView = (GridView) findViewById(R.id.gridView);
- gridView.setAdapter(mAdapter);
-
- fb = FinalBitmap.create(this);//初始化FinalBitmap模块
- fb.configLoadingImage(R.drawable.downloading);
- //这里可以进行其他十几项的配置,也可以不用配置,配置之后必须调用init()函数,才生效
- //fb.configBitmapLoadThreadSize(int size)
- //fb.configBitmapMaxHeight(bitmapHeight)
- }
-
-
-///////////////////////////adapter getView////////////////////////////////////////////
-
-public View getView(int position, View convertView, ViewGroup parent) {
- ImageView iv;
- if(convertView == null){
- convertView = View.inflate(BitmapCacheActivity.this,R.layout.image_item, null);
- iv = (ImageView) convertView.findViewById(R.id.imageView);
- iv.setScaleType(ScaleType.CENTER_CROP);
- convertView.setTag(iv);
- }else{
- iv = (ImageView) convertView.getTag();
- }
- //bitmap加载就这一行代码,display还有其他重载,详情查看源码
- fb.display(iv,Images.imageUrls[position]);
-```
-
-
----
-**>>> Add by fantouch**
-
-#### 配置成Android Library Project
-*解决需求:有多个项目依赖afinal,并且想修改afinal源码*
->
-* clone到本地
-* 添加AndroidManifest.xml文件:
-```xml
-
-
-
-
-```
->
-* 导入到 Eclipse:
-`Import => Android => Existing Android Code Into Workspace`
-* 工程上按右键 => Properties => Android => √ Is Library
-* 完成,你的项目可以引用这个afinal Library了.
-
-#### 排除不需要Git管理的文件
-*解决需求:想修改源码,但不想让Eclipse把工程弄脏*
->
-* 忽略已经被Git管理的`./bin`目录:
-导入Eclipse前执行: ` git update-index --assume-unchanged ./bin/* `
->
-* 忽略未被Git管理的文件和目录: 添加`/.gitignore` 文件:
-```
-/gen
-/assets
-/bin
-/res
-/.classpath
-/.project
-/AndroidManifest.xml
-/project.properties
-/.gitignore
-```
-* 导入到Eclipse,`git status`可见Repository依旧干净.
-
-**<<< Add by fantouch**
-
----
-
-#关于作者michael
-* 个人博客:[http://www.yangfuhai.com](http://www.yangfuhai.com)
-* afinal捐助:[http://me.alipay.com/yangfuhai](http://me.alipay.com/yangfuhai) (为了感谢捐助者,michael将会把捐助者将公布在afinal官方网站[afinal.org](http://www.afinal.org)上,不让公布的同学说明下)
-* afinal交流QQ群 : 192341294
-
+克隆自 https://github.com/yangfuhai/afinal
+针对需求做了些自定义的改动
diff --git a/src/net/tsz/afinal/FinalBitmap.java b/src/net/tsz/afinal/FinalBitmap.java
index b718da9..3433b7f 100644
--- a/src/net/tsz/afinal/FinalBitmap.java
+++ b/src/net/tsz/afinal/FinalBitmap.java
@@ -341,11 +341,11 @@ private void doDisplay(View imageView, String uri, BitmapDisplayConfig displayCo
}
if (bitmap != null) {
- if(imageView instanceof ImageView){
- ((ImageView)imageView).setImageBitmap(bitmap);
- }else{
- imageView.setBackgroundDrawable(new BitmapDrawable(bitmap));
+ Displayer displayer = displayConfig.getDisplayer();
+ if(null == displayer){
+ displayer=mConfig.displayer;
}
+ displayer.loadCompletedisplay(imageView, bitmap, displayConfig);
}else if (checkImageTask(uri, imageView)) {
@@ -707,10 +707,16 @@ protected void onPostExecute(Bitmap bitmap) {
// 判断线程和当前的imageview是否是匹配
final View imageView = getAttachedImageView();
- if (bitmap != null && imageView != null) {
- mConfig.displayer.loadCompletedisplay(imageView,bitmap,displayConfig);
- }else if(bitmap == null && imageView!=null ){
- mConfig.displayer.loadFailDisplay(imageView, displayConfig.getLoadfailBitmap());
+ if (null != imageView) {
+ Displayer displayer = displayConfig.getDisplayer();
+ if (null == displayer) {
+ displayer = mConfig.displayer;
+ }
+ if (bitmap != null) {
+ displayer.loadCompletedisplay(imageView, bitmap, displayConfig);
+ } else {
+ displayer.loadFailDisplay(imageView, displayConfig.getLoadfailBitmap());
+ }
}
}
diff --git a/src/net/tsz/afinal/FinalDb.java b/src/net/tsz/afinal/FinalDb.java
index 52b700e..2875592 100644
--- a/src/net/tsz/afinal/FinalDb.java
+++ b/src/net/tsz/afinal/FinalDb.java
@@ -17,7 +17,6 @@
import java.io.File;
import java.io.IOException;
-import java.lang.String;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -37,7 +36,6 @@
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;
import android.util.Log;
@@ -56,14 +54,10 @@ private FinalDb(DaoConfig config) {
throw new DbException("daoConfig is null");
if (config.getContext() == null)
throw new DbException("android context is null");
- if (config.getTargetDirectory() != null
- && config.getTargetDirectory().trim().length() > 0) {
- this.db = createDbFileOnSDCard(config.getTargetDirectory(),
- config.getDbName());
+ if (config.getTargetDirectory() != null && config.getTargetDirectory().trim().length() > 0) {
+ this.db = createDbFileOnSDCard(config.getTargetDirectory(), config.getDbName());
} else {
- this.db = new SqliteDbHelper(config.getContext()
- .getApplicationContext(), config.getDbName(),
- config.getDbVersion(), config.getDbUpdateListener())
+ this.db = new SqliteDbHelper(config.getContext().getApplicationContext(), config.getDbName(), config.getDbVersion(), config.getDbUpdateListener())
.getWritableDatabase();
}
this.config = config;
@@ -142,8 +136,7 @@ public static FinalDb create(Context context, String dbName, boolean isDebug) {
* @param dbName
* 数据库名称
*/
- public static FinalDb create(Context context, String targetDirectory,
- String dbName) {
+ public static FinalDb create(Context context, String targetDirectory, String dbName) {
DaoConfig config = new DaoConfig();
config.setContext(context);
config.setDbName(dbName);
@@ -160,8 +153,7 @@ public static FinalDb create(Context context, String targetDirectory,
* @param isDebug
* 是否为debug模式(debug模式进行数据库操作的时候将会打印sql语句)
*/
- public static FinalDb create(Context context, String targetDirectory,
- String dbName, boolean isDebug) {
+ public static FinalDb create(Context context, String targetDirectory, String dbName, boolean isDebug) {
DaoConfig config = new DaoConfig();
config.setContext(context);
config.setTargetDirectory(targetDirectory);
@@ -185,8 +177,7 @@ public static FinalDb create(Context context, String targetDirectory,
* 数据库升级监听器:如果监听器为null,升级的时候将会清空所所有的数据
* @return
*/
- public static FinalDb create(Context context, String dbName,
- boolean isDebug, int dbVersion, DbUpdateListener dbUpdateListener) {
+ public static FinalDb create(Context context, String dbName, boolean isDebug, int dbVersion, DbUpdateListener dbUpdateListener) {
DaoConfig config = new DaoConfig();
config.setContext(context);
config.setDbName(dbName);
@@ -212,9 +203,7 @@ public static FinalDb create(Context context, String dbName,
* :如果监听器为null,升级的时候将会清空所所有的数据
* @return
*/
- public static FinalDb create(Context context, String targetDirectory,
- String dbName, boolean isDebug, int dbVersion,
- DbUpdateListener dbUpdateListener) {
+ public static FinalDb create(Context context, String targetDirectory, String dbName, boolean isDebug, int dbVersion, DbUpdateListener dbUpdateListener) {
DaoConfig config = new DaoConfig();
config.setContext(context);
config.setTargetDirectory(targetDirectory);
@@ -256,8 +245,7 @@ public void save(Object entity) {
*/
public boolean saveBindId(Object entity) {
checkTableExist(entity.getClass());
- List entityKvList = SqlBuilder
- .getSaveKeyValueListByEntity(entity);
+ List entityKvList = SqlBuilder.getSaveKeyValueListByEntity(entity);
if (entityKvList != null && entityKvList.size() > 0) {
TableInfo tf = TableInfo.get(entity.getClass());
ContentValues cv = new ContentValues();
@@ -283,8 +271,7 @@ private void insertContentValues(List list, ContentValues cv) {
cv.put(kv.getKey(), kv.getValue().toString());
}
} else {
- Log.w(TAG,
- "insertContentValues: List is empty or ContentValues is empty!");
+ Log.w(TAG, "insertContentValues: List is empty or ContentValues is empty!");
}
}
@@ -349,6 +336,10 @@ public void deleteByWhere(Class> clazz, String strWhere) {
db.execSQL(sql);
}
+ public void execSQL(String sql) {
+ db.execSQL(sql);
+ }
+
/**
* 删除表的所有数据
*
@@ -377,9 +368,10 @@ public void dropTable(Class> clazz) {
/**
* 删除所有数据表
*/
- public void dropDb() {
- Cursor cursor = db.rawQuery(
- "SELECT name FROM sqlite_master WHERE type ='table' AND name != 'sqlite_sequence'", null);
+ public void dropDb(String where) {
+ if (null == where)
+ where = "SELECT name FROM sqlite_master WHERE type ='table' AND name != 'sqlite_sequence'";
+ Cursor cursor = db.rawQuery(where, null);
if (cursor != null) {
while (cursor.moveToNext()) {
db.execSQL("DROP TABLE " + cursor.getString(0));
@@ -411,8 +403,7 @@ public T findById(Object id, Class clazz) {
SqlInfo sqlInfo = SqlBuilder.getSelectSqlAsSqlInfo(clazz, id);
if (sqlInfo != null) {
debugSql(sqlInfo.getSql());
- Cursor cursor = db.rawQuery(sqlInfo.getSql(),
- sqlInfo.getBindArgsAsStringArray());
+ Cursor cursor = db.rawQuery(sqlInfo.getSql(), sqlInfo.getBindArgsAsStringArray());
try {
if (cursor.moveToNext()) {
return CursorUtils.getEntity(cursor, clazz, this);
@@ -426,6 +417,23 @@ public T findById(Object id, Class clazz) {
return null;
}
+ public int getCount(Class clazz, String strWhere) {
+ String sql = SqlBuilder.getCount(clazz, strWhere);
+ Cursor cur = db.rawQuery(sql, null);
+ int num = 0;
+ try {
+ if (cur.moveToFirst() != false) {
+ int nameColumnIndex = cur.getColumnIndex("number");
+ num = cur.getInt(nameColumnIndex);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ cur.close();
+ }
+ return num;
+ }
+
/**
* 根据主键查找,同时查找“多对一”的数据(如果有多个“多对一”属性,则查找所有的“多对一”属性)
*
@@ -453,8 +461,7 @@ public T findWithManyToOneById(Object id, Class clazz) {
* @param findClass
* 要查找的类
*/
- public T findWithManyToOneById(Object id, Class clazz,
- Class>... findClass) {
+ public T findWithManyToOneById(Object id, Class clazz, Class>... findClass) {
checkTableExist(clazz);
String sql = SqlBuilder.getSelectSQL(clazz, id);
debugSql(sql);
@@ -474,21 +481,17 @@ public T findWithManyToOneById(Object id, Class clazz,
* @param
* @return
*/
- public T loadManyToOne(DbModel dbModel, T entity, Class clazz,
- Class>... findClass) {
+ public T loadManyToOne(DbModel dbModel, T entity, Class clazz, Class>... findClass) {
if (entity != null) {
try {
- Collection manys = TableInfo.get(clazz).manyToOneMap
- .values();
+ Collection manys = TableInfo.get(clazz).manyToOneMap.values();
for (ManyToOne many : manys) {
Object id = null;
if (dbModel != null) {
id = dbModel.get(many.getColumn());
- } else if (many.getValue(entity).getClass() == ManyToOneLazyLoader.class
- && many.getValue(entity) != null) {
- id = ((ManyToOneLazyLoader) many.getValue(entity))
- .getFieldValue();
+ } else if (many.getValue(entity).getClass() == ManyToOneLazyLoader.class && many.getValue(entity) != null) {
+ id = ((ManyToOneLazyLoader) many.getValue(entity)).getFieldValue();
}
if (id != null) {
@@ -505,21 +508,13 @@ public T loadManyToOne(DbModel dbModel, T entity, Class clazz,
if (isFind) {
@SuppressWarnings("unchecked")
- T manyEntity = (T) findById(
- Integer.valueOf(id.toString()),
- many.getManyClass());
+ T manyEntity = (T) findById(Integer.valueOf(id.toString()), many.getManyClass());
if (manyEntity != null) {
if (many.getValue(entity).getClass() == ManyToOneLazyLoader.class) {
if (many.getValue(entity) == null) {
- many.setValue(
- entity,
- new ManyToOneLazyLoader(entity,
- clazz,
- many.getManyClass(),
- this));
+ many.setValue(entity, new ManyToOneLazyLoader(entity, clazz, many.getManyClass(), this));
}
- ((ManyToOneLazyLoader) many
- .getValue(entity)).set(manyEntity);
+ ((ManyToOneLazyLoader) many.getValue(entity)).set(manyEntity);
} else {
many.setValue(entity, manyEntity);
}
@@ -561,8 +556,7 @@ public T findWithOneToManyById(Object id, Class clazz) {
* @param clazz
* @param findClass
*/
- public T findWithOneToManyById(Object id, Class clazz,
- Class>... findClass) {
+ public T findWithOneToManyById(Object id, Class clazz, Class>... findClass) {
checkTableExist(clazz);
String sql = SqlBuilder.getSelectSQL(clazz, id);
debugSql(sql);
@@ -586,8 +580,7 @@ public T findWithOneToManyById(Object id, Class clazz,
public T loadOneToMany(T entity, Class clazz, Class>... findClass) {
if (entity != null) {
try {
- Collection ones = TableInfo.get(clazz).oneToManyMap
- .values();
+ Collection ones = TableInfo.get(clazz).oneToManyMap.values();
Object id = TableInfo.get(clazz).getId().getValue(entity);
for (OneToMany one : ones) {
boolean isFind = false;
@@ -602,13 +595,11 @@ public T loadOneToMany(T entity, Class clazz, Class>... findClass) {
}
if (isFind) {
- List> list = findAllByWhere(one.getOneClass(),
- one.getColumn() + "=" + id);
+ List> list = findAllByWhere(one.getOneClass(), one.getColumn() + "=" + id);
if (list != null) {
/* 如果是OneToManyLazyLoader泛型,则执行灌入懒加载数据 */
if (one.getDataType() == OneToManyLazyLoader.class) {
- OneToManyLazyLoader oneToManyLazyLoader = one
- .getValue(entity);
+ OneToManyLazyLoader oneToManyLazyLoader = one.getValue(entity);
oneToManyLazyLoader.setList(list);
} else {
one.setValue(entity, list);
@@ -642,8 +633,7 @@ public List findAll(Class clazz) {
*/
public List findAll(Class clazz, String orderBy) {
checkTableExist(clazz);
- return findAllBySql(clazz, SqlBuilder.getSelectSQL(clazz)
- + " ORDER BY " + orderBy);
+ return findAllBySql(clazz, SqlBuilder.getSelectSQL(clazz) + " ORDER BY " + orderBy);
}
/**
@@ -655,8 +645,7 @@ public List findAll(Class clazz, String orderBy) {
*/
public List findAllByWhere(Class clazz, String strWhere) {
checkTableExist(clazz);
- return findAllBySql(clazz,
- SqlBuilder.getSelectSQLByWhere(clazz, strWhere));
+ return findAllBySql(clazz, SqlBuilder.getSelectSQLByWhere(clazz, strWhere));
}
/**
@@ -668,12 +657,9 @@ public List findAllByWhere(Class clazz, String strWhere) {
* @param orderBy
* 排序字段
*/
- public List findAllByWhere(Class clazz, String strWhere,
- String orderBy) {
+ public List findAllByWhere(Class clazz, String strWhere, String orderBy) {
checkTableExist(clazz);
- return findAllBySql(clazz,
- SqlBuilder.getSelectSQLByWhere(clazz, strWhere) + " ORDER BY "
- + orderBy);
+ return findAllBySql(clazz, SqlBuilder.getSelectSQLByWhere(clazz, strWhere) + " ORDER BY " + orderBy);
}
/**
@@ -753,8 +739,7 @@ private boolean tableIsExist(TableInfo table) {
Cursor cursor = null;
try {
- String sql = "SELECT COUNT(*) AS c FROM sqlite_master WHERE type ='table' AND name ='"
- + table.getTableName() + "' ";
+ String sql = "SELECT COUNT(*) AS c FROM sqlite_master WHERE type ='table' AND name ='" + table.getTableName() + "' ";
debugSql(sql);
cursor = db.rawQuery(sql, null);
if (cursor != null && cursor.moveToNext()) {
@@ -854,8 +839,7 @@ public void setTargetDirectory(String targetDirectory) {
* @param dbfilename
* @return
*/
- private SQLiteDatabase createDbFileOnSDCard(String sdcardPath,
- String dbfilename) {
+ private SQLiteDatabase createDbFileOnSDCard(String sdcardPath, String dbfilename) {
File dbf = new File(sdcardPath, dbfilename);
if (!dbf.exists()) {
try {
@@ -876,22 +860,21 @@ class SqliteDbHelper extends SQLiteOpenHelper {
private DbUpdateListener mDbUpdateListener;
- public SqliteDbHelper(Context context, String name, int version,
- DbUpdateListener dbUpdateListener) {
+ public SqliteDbHelper(Context context, String name, int version, DbUpdateListener dbUpdateListener) {
super(context, name, null, version);
this.mDbUpdateListener = dbUpdateListener;
}
@Override
- public void onCreate(SQLiteDatabase db) {
+ public void onCreate(SQLiteDatabase db) {
}
@Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (mDbUpdateListener != null) {
mDbUpdateListener.onUpgrade(db, oldVersion, newVersion);
} else { // 清空所有的数据信息
- dropDb();
+ dropDb(null);
}
}
diff --git a/src/net/tsz/afinal/bitmap/core/BitmapDisplayConfig.java b/src/net/tsz/afinal/bitmap/core/BitmapDisplayConfig.java
index a27ce5c..73147ae 100644
--- a/src/net/tsz/afinal/bitmap/core/BitmapDisplayConfig.java
+++ b/src/net/tsz/afinal/bitmap/core/BitmapDisplayConfig.java
@@ -15,6 +15,7 @@
*/
package net.tsz.afinal.bitmap.core;
+import net.tsz.afinal.bitmap.display.Displayer;
import android.graphics.Bitmap;
import android.view.animation.Animation;
@@ -30,7 +31,16 @@ public class BitmapDisplayConfig {
private Bitmap loadingBitmap;
private Bitmap loadfailBitmap;
+ private Displayer displayer;
+ public Displayer getDisplayer() {
+ return displayer;
+ }
+
+ public BitmapDisplayConfig setDisplayer(Displayer displayer) {
+ this.displayer = displayer;
+ return this;
+ }
public int getBitmapWidth() {
return bitmapWidth;
}
diff --git a/src/net/tsz/afinal/db/sqlite/SqlBuilder.java b/src/net/tsz/afinal/db/sqlite/SqlBuilder.java
index 1aeac3e..0a4e7ba 100644
--- a/src/net/tsz/afinal/db/sqlite/SqlBuilder.java
+++ b/src/net/tsz/afinal/db/sqlite/SqlBuilder.java
@@ -19,14 +19,13 @@
import java.util.Collection;
import java.util.List;
-import android.text.TextUtils;
-
import net.tsz.afinal.db.table.Id;
import net.tsz.afinal.db.table.KeyValue;
import net.tsz.afinal.db.table.ManyToOne;
import net.tsz.afinal.db.table.Property;
import net.tsz.afinal.db.table.TableInfo;
import net.tsz.afinal.exception.DbException;
+import android.text.TextUtils;
public class SqlBuilder {
@@ -180,7 +179,12 @@ public static String getSelectSQL(Class> clazz,Object idValue){
return strSQL.toString();
}
-
+ public static String getCount(Class> clazz,String strWhere){
+ TableInfo table=TableInfo.get(clazz);
+ StringBuffer strSQL = new StringBuffer("select count(id) AS number from ").append(table.getTableName());
+ strSQL.append(" WHERE ").append(strWhere);
+ return strSQL.toString();
+ }
public static SqlInfo getSelectSqlAsSqlInfo(Class> clazz,Object idValue){
TableInfo table=TableInfo.get(clazz);