SimpleCursorAdapter를 사용하여 데이터베이스에서 쿼리 된 항목을 목록보기에 표시하려고합니다. 예를 들어 데이터베이스에 20,000 개의 항목이있을 수 있습니다. 나는 100 개 항목 (_id : 1-100)을로드하고 싶습니다. 목록보기 끝에서 스크롤 할 때 다른 항목 100 개 (_id : 101-200)를 쿼리 할 때 어떻게 쿼리합니까? 어떤 제안이라도 환영합니다. 감사합니다. 다음과 같이SimpleCursorAdapter를 통해 데이터베이스에서 데이터를 쿼리 한 listview를 업데이트하는 방법은 무엇입니까?
상대 코드는 다음과 같습니다 내 정의 된 목록보기에서
protected void onCreate(Bundle savedInstanceState) {
mCursor = managedQuery(CONTENT_URI, PROJECTION, null, null, "_id DESC");
mAdapter = new SimpleCursorAdapter(this,R.layout.list_content, mCursor, keys, values);
setListAdapter(mAdapter);
}
, 난 쿼리 데이터베이스의 더 많은 항목을로드 할.
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
{
int lastItem = firstVisibleItem + visibleItemCount - 1;
if (mListAdapter != null) {
if ((lastItem == mListAdapter.getCount()-1) && (mRefreshState != REFRESHING)) {
mFooterView.setVisibility(View.VISIBLE);
mRefreshState = REFRESHING;
new Handler().postDelayed(new Runnable() {
public void run() {
//execute the task , i want to load more items by query database
RefreshListView(LOADING_STORED_INFO);
}
}, DEFAULT_DELAY_TIMER);
}
}
}
데이터를로드하는 AsyncTask에서 쿼리 작업을 수행합니다.
SELECT your_column FROM your_table ORDER BY your_order LIMIT limit_skip, limit_count
이 그럼 당신은 최초의 가시 셀의 인덱스와 눈에 보이는 세포의 수는 수를 검색 OnScrollListener
를 사용할 수 있습니다
protected Integer doInBackground(Integer... params)
{
Uri uri = ContentUris.withAppendedId(CONTENT_URI, mCursor.getInt(0)-1);
cursor = managedQuery(uri, PROJECTION, null, null, "_id DESC");
return (0 == params[0]) ? 1 : 0;
}
@Override
protected void onPostExecute(Integer result)
{
mAdapter.changeCursor(cursor);//is this OK?
mAdapter.notifyDataSetChanged();
/*
if (1 == result)
{
mListView.setSelection(1);
}
else
{
mListView.setSelection(mCount-1);
}*/
// Call onRefreshComplete when the list has been refreshed.
mListView.onRefreshComplete(result);
super.onPostExecute(result);
}
상대 코드는 다음과 같습니다. – breeze