我需要将gridlayout应用于recyclerview并在应用程序的早期绘制1600个项目。然后,我使用scrollby滚动到所需的位置。但是它不会滚动。由于应用程序在notifyDataSetChanged运行时冻结当这些物品出现在回收站视图中时,停止释放。
执行顺序
-添加项目-notifyDataSetChanged-滚动运动
创建测试按钮后更新完成后单击此按钮将使滚动运行。
在runOnUiThread中运行notifyDataSetChanged还会冻结该应用一段时间。是什么原因?
new Thread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
mBinding.loading.setVisibility(View.GONE);
mBinding.horizontalScrollView.scrollBy(((int)((51*movey)*destiny)),0);
mBinding.recyclerView.scrollBy(0,((int)((51*movex)*destiny)));
}
});
}
}).start();
停止可能是大量使用cpu和gpu的结果
作为建议,您可以使用分页显示每个请求少量项目。