private ListView mLv_call_safe;
private ProgressBar mPb_loading;
private List<BlackNumInfo> mList;
private MyAdapter mAdapter;
private final int MAX_NUM = 20;
private int startIndex = 0;
private BlackNumDao mBlackNumDao;
private void setData(){
new MyAsyncTask() {
@Override
public void onPreExecute() {
}
@Override
public void doInBackground() {
mBlackNumDao = new BlackNumDao(getApplicationContext());
if (mList == null){
mList = mBlackNumDao.querypartNum(MAX_NUM , startIndex);
else {
mList.addAll(mBlackNumDao.querypartNum(MAX_NUM , startIndex));
}
}
@Override
public void onPostExecute() {
if (mAdapter == null){
mAdapter = new MyAdapter();
mLv_call_safe.setAdapter(mAdapter);
}else {
mAdapter.notifyDataSetChanged();
}
mPb_loading.setVisibility(View.GONE);
}
}.execute();
}
mListView.setOnScrollListener(newAbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (SCROLL_STATE_IDLE == scrollState){
int position = mLv_call_safe.getLastVisiblePosition();
if (position == mList.size() - 1){
startIndex += MAX_NUM;
setData();
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
public List<BlackNumInfo> querypartNum(int maxNum , int startNum){
List<BlackNumInfo> list = new ArrayList<>()
SQLiteDatabase database = mHelper.getWritableDatabase()
//倒序查询,limit:设置总数,offset:设置起始位置
Cursor cursor = database.rawQuery("select blacknum , mode "
+ " from " + BlackNumHelper.TABLE_NAME + " order by _id desc limit ? offset ?"
, new String[]{maxNum + "", startNum + ""})
while (cursor.moveToNext()){
String num = cursor.getString(cursor.getColumnIndex(BlackNumHelper.TABLE_NUM))
int mode = cursor.getInt(cursor.getColumnIndex(BlackNumHelper.TABLE_MODE))
BlackNumInfo info = new BlackNumInfo(num , mode)
list.add(info)
}
cursor.close()
database.close()
return list
}