即时通讯APP的开发
2016-03-16 22:04
351 查看
开发思路
1,使用数据库存储数据,利用观察者模式实现数据和视图刷新的解耦
2,具体使用观察者模式实现每次加入数据动作的时候的通知界面去刷新
3,难点:输入视图的控制、表情的使用,数据的查询,加载更多
4,上拉加载更多的做法:从数据库中查询的条目的所有的个数,然后使用滑动的设置当前条目显示的个数,然后通过滑动的回调,显示加载更多条目
5,加载数据的数据的时候cursor的服务类的写法
以上就是写的一个中间类,用来定义每次的界面加载的个数,在监听滑动的动作的时候回调的时候将回调然后每次定义加载的个数
1,使用数据库存储数据,利用观察者模式实现数据和视图刷新的解耦
2,具体使用观察者模式实现每次加入数据动作的时候的通知界面去刷新
3,难点:输入视图的控制、表情的使用,数据的查询,加载更多
4,上拉加载更多的做法:从数据库中查询的条目的所有的个数,然后使用滑动的设置当前条目显示的个数,然后通过滑动的回调,显示加载更多条目
5,加载数据的数据的时候cursor的服务类的写法
package com.example.testscrollsqlite;
import java.util.ArrayList;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class DatabaseService {
private Context mContext;
private MyDBOpenHelper dbHelper;
public DatabaseService(Context context) {
// TODO Auto-generated constructor stub
mContext = context;
dbHelper = new MyDBOpenHelper(mContext);
}
// 添加
public void insert(String title) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = "insert into database(title) values(?)";
db.execSQL(sql, new String[] { title });
}
// 删除
public void delete(String title) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = "delete from database where title = ?";
db.execSQL(sql, new String[] { title });
}
// 查找
public ArrayList<String> find(int id) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = "select * from database where _id = ? ";
Cursor c = db.rawQuery(sql, new String[] { String.valueOf(id) });
ArrayList<String> titles = new ArrayList<String>();
if (c.moveToNext()) {
String title = c.getString(c
.getColumnIndexOrThrow(MyDBOpenHelper.FIELD_TITLE));
titles.add(title);
return titles;
}
// 不用忘记关闭Cursor。
c.close();
return null;
}
// 更新
public void upDate(int id, String title) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = "update database set title =? where _id = ?";
db.execSQL(sql,
new String[] { String.valueOf(title), String.valueOf(id) });
}
// 查询记录的总数
public int getCount() {
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = "select count(*) from database";
Cursor c = db.rawQuery(sql, null);
c.moveToFirst();
int length = c.getInt(0);
c.close();
return length;
}
/**
* 分页查询
*
* @param currentPage 当前页
* @param pageSize 每页显示的记录
* @return 当前页的记录
*/
public ArrayList<String> getAllItems(int currentPage, int pageSize) {
int firstResult = (currentPage - 1) * pageSize;
int maxResult = currentPage * pageSize;
SQLiteDatabase db = dbHelper.getWritableDatabase();
String sql = "select * from database limit ?,?";
Cursor mCursor = db.rawQuery(
sql,
new String[] { String.valueOf(firstResult),
String.valueOf(maxResult) });
ArrayList<String> items = new ArrayList<String>();
int columnCount = mCursor.getColumnCount();
while (mCursor.moveToNext()) {
String item = mCursor.getString(mCursor
.getColumnIndexOrThrow(MyDBOpenHelper.FIELD_TITLE));
items.add(item);
}
//不要关闭数据库
return items;
}
}
以上就是写的一个中间类,用来定义每次的界面加载的个数,在监听滑动的动作的时候回调的时候将回调然后每次定义加载的个数
相关文章推荐
- Android旋转Bitmap
- Android应对进程被杀死--Service(三)
- codeforces 632aGrandma Laura and Apples(背包)
- Android RecyclerView使用详解(一)
- android目录结构介绍(寒假学习1)
- Android中接收系统广播消息
- android系统中间件移植-3G4G通信模块适配
- Android中圆形图的几种实现方式
- Android 4G模块调试总结
- Android应对进程被杀死--Service(四) 通过JNI实现守护进程,使Service服务不被杀死
- iOS之页面传值-----单例传值、通知传值
- ios json
- android---xml---include用法(导入另一个XML文件到本布局中)
- android学习路线图
- IOS 沙盒机制 浅析
- unity3d google play 内购发布
- textView.setText() 的时候报错 android.content.res.Resources$NotFoundException: String resource ID #0x0
- 在Unity中引用Dll的两种方法
- Android逆向分析工具整理
- 微信分享调用 -- c#篇