1
我有一個ListView
本站由CursorAdapter
驅動。該ListView
已OnScrollListener
附:CursorAdapter和滾動:visibleItemCount變得巨大零星
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
android.util.Log.e("===", "Scrolling: firstVisibleItem:" + firstVisibleItem + ", visibleItemCount:" + visibleItemCount + ", totalItemCount:" + totalItemCount);
//some logic here
}
});
當我向下滾動,達到列表的新項目是從網上下載的底部,添加到數據庫和CursorAdapter
光標更新刷新列表:
adapter.changeCursor(newCursor); //the query for the cursor is always the same, it never changes
然而,當我向上滾動併到達列表的中間左右時,有時visibleItemCount
參數被設置爲遠大於其通常值的值(40與通常的7-8相比)。接下來是短暫的滯後,並且該列表立即移回,接近底部。
我的CursorAdapter是這樣的:
class MyCursorAdapter extends CursorAdapter {
//...
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = layoutInflater.inflate(R.layout.my_layout, parent, false);
return view;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
populateView(view, cursor);
}
private void populateView(View view, Cursor cursor) {
//...
//this does not move the cursor, only reads from it
}
}
我做錯什麼了嗎?
編輯
問題實際上也不涉及到的CursorAdapter,我曾與一個普通BaseAdapter取代它,問題仍然存在。