Android 更新适配器的最佳实践
我有一个适配器,可以显示带有文本的网格缩略图。这些缩略图很难加载、绘制等等 缩略图gridview不断地被新内容填充,比如说,每2秒就有一个新项目 我的适配器有一个从外部调用的函数,用于注入新项:Android 更新适配器的最佳实践,android,gridview,adapter,Android,Gridview,Adapter,我有一个适配器,可以显示带有文本的网格缩略图。这些缩略图很难加载、绘制等等 缩略图gridview不断地被新内容填充,比如说,每2秒就有一个新项目 我的适配器有一个从外部调用的函数,用于注入新项: public void postNew(Item i) { arrayStuff.put(i); notifyDataSetChanged(); } 在我当前的方法中,当我在gridview中插入一个新元素时,它会刷新所有内容,即使添加的项不可见。刷新过程有点破坏了体验,特别是当用户
public void postNew(Item i) {
arrayStuff.put(i);
notifyDataSetChanged();
}
在我当前的方法中,当我在gridview中插入一个新元素时,它会刷新所有内容,即使添加的项不可见。刷新过程有点破坏了体验,特别是当用户正在浏览gridview并且新内容到达时
您建议如何改进这一点?是否有更轻的“notifyDataSetChanged()”或类似的内容?我不知道有任何更轻版本的notify数据集,但您可以始终使用ListView.getFirstVisiblePosition和ListView.getLastVisiblePosition来确定您最近添加的位置是否可见,如果可见,则只调用notifyDataSetChanged
至于“重”位图,尽管它很重,但我认为您应该重新采样或将其缩放到所需的最小大小,使用LruCache可以减少在更改的notify数据集上重新绘制的需要。听起来您可能需要实现某种形式的缓存,将不可见的图像加载到内存中不是很好的内存管理,理想情况下,当它们变得(或即将变得)可见时,您可以从缓存中检索它们
另一种方法是在新内容到达时添加某种形式的可视指示器,然后实现“下拉刷新”或类似功能,然后在适配器上调用notifyDataSetChanged()刷新内容。我可以想象,每隔几秒钟刷新一次并不会产生很好的用户体验,因为如果屏幕内容不断变化,则很难进行跟踪。您需要创建自定义视图(运行时动态),添加多个imageview和相应的textview,容器视图应该是LinearLayout,之后,您可以更新特定的视图或元素。有趣的。。。如果getLastVisiblePosition