gpt4 book ai didi

android - CursorAdapter 和滚动 : visibleItemCount becomes huge sporadically

转载 作者:行者123 更新时间:2023-11-30 02:21:45 26 4
gpt4 key购买 nike

我有一个由 CursorAdapter 驱动的 ListViewListView 附有 OnScrollListener:

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,但问题仍然存在。

最佳答案

问题是 ListView 项的根元素的 layout_height 等于 wrap_content。当 View 中有很多项目时,这可能会导致 ListView (或适配器,我不知道)内部出现一些性能问题。将 layout_height 更改为精确值解决了问题(并使列表滚动更顺畅):

layout_height="30dp"

关于android - CursorAdapter 和滚动 : visibleItemCount becomes huge sporadically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28411211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com