分页加载
/**
* 上一页的按钮事件
*/
public void prePage(View view) {
if (mCurrentPageNumber <= 0) {
return;
}
mCurrentPageNumber--;
initData();
}
/**
* 下一页
*
* @param view
*/
public void nextPage(View view) {
if (mCurrentPageNumber >= (totalPage - 1)) {
return;
}
mCurrentPageNumber++;
initData();
}
public void jump(View view) {
private void initData1(){
totalPage = dao.getTotalNumber()/每一页显示的条目数;
lists = new ArrayList<>();
lists = dao.findPar(currentPage, PAGESIZE);
tvPageNumber.setText(currentPage+1 + "/" + totalPage);
adapter = new CallSafeAdapter(lists,CallSafeActivity.this);
listView.setAdapter(adapter);
}
/**
* 分页加载数据
*
* @param currentPageNumber 表示当前是哪一页
* @param pageSize 表示每一页有多少条数据
* limit 表示限制当前有多少数据
* offset 表示跳过 从第几条开始
*/
public List<BlackNumberInfo> findPar(int currentPageNumber, int pageSize) {
SQLiteDatabase db = helper.getReadableDatabase();
String limit=currentPageNumber*pageSize+","+pageSize;
Cursor cursor = db.query("blacknumber", new String[]{"number", "mode"}, null, null, null, null, null, limit);
List<BlackNumberInfo> blackNumberInfos = new ArrayList<>();
while (cursor.moveToNext()) {
BlackNumberInfo blackNumberInfo = new BlackNumberInfo();
blackNumberInfo.setMode(cursor.getString(1));
blackNumberInfo.setNumber(cursor.getString(0));
blackNumberInfos.add(blackNumberInfo);
}
cursor.close();
db.close();
return blackNumberInfos;
}
分批加载
private void initUI() {
dao = new BlackNumberDao(CallSafeActivity2.this);
totalNumber = dao.getTotalNumber();
blackNumberInfos = new ArrayList<>();
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
/**
*
* @param view
* @param scrollState 表示滚动的状态
*
*AbsListView.OnScrollListener.SCROLL_STATE_IDLE 闲置状态
*AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL 手指触摸的时候的状态
*AbsListView.OnScrollListener.SCROLL_STATE_FLING 惯性
*/
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == SCROLL_STATE_IDLE) {
int lastVisiblePosition = listView.getLastVisiblePosition();
if (lastVisiblePosition == blackNumberInfos.size() - 1) {
startIndex += MAXCOUNT;
if (startIndex >= totalNumber) {
ToastUtils.showToast(CallSafeActivity2.this, "已经是最后一条了");
return;
}
initData();
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount){}
});
}
/**
* 初始化数据
*/
private void initData() {
if (blackNumberInfos == null)
blackNumberInfos = dao.findPar2(startIndex, MAXCOUNT);
else
blackNumberInfos.addAll(dao.findPar2(startIndex, MAXCOUNT));
System.out.println(blackNumberInfos.size());
if (adapter==null) {
adapter = new CallSafeAdapter(blackNumberInfos, CallSafeActivity2.this);
listView.setAdapter(adapter);
} else {
adapter.notifyDataSetChanged();
listView.setSelection(startIndex);
}
}
/**
* 分批加载数据
*
* @param startIndex 开始的位置
* @param maxCount 每页展示的最大的条目
* @return
*/
public List<BlackNumberInfo> findPar2(int startIndex, int maxCount) {
SQLiteDatabase db = helper.getReadableDatabase();
String limit=startIndex+","+maxCount;
Cursor cursor = db.query("blacknumber", new String[]{"number", "mode"}, null, null, null, null, null, limit);
List<BlackNumberInfo> blackNumberInfos = new ArrayList<>();
while (cursor.moveToNext()) {
BlackNumberInfo blackNumberInfo = new BlackNumberInfo();
blackNumberInfo.setMode(cursor.getString(1));
blackNumberInfo.setNumber(cursor.getString(0));
blackNumberInfos.add(blackNumberInfo);
}
cursor.close();
db.close();
return blackNumberInfos;
}