我有一个非常令人沮丧的问题,我不知道是什么问题。我构建了只包含GridView的简单XML。这个gridview应该显示从特定的URL下载的图像(ImageView ),我用我的代码检索这些图像。
因此,此应用程序的想法只是从URL下载图像并在网格视图中显示这些图像。首先,我必须说我正在使用通用图像加载器库。首先,请看一下我的获取视图代码:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv;
if(convertView == null) {
iv = new ImageView(MyActivity.this);
iv.setLayoutParams(new GridView.LayoutParams(size,size));
iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
Log.d("APP", "convertView is NULL");
}
else {
iv = (ImageView) convertView;
Log.d("APP", "convertView is NOT null");
}
loader.displayImage(URLS.get(position), iv);
return iv;
}
问题:
上面的代码有效,它在GridView中显示图像。但是当我向下滚动时,我看到:
我如何解决这个问题:
> < li>
我通过不检查convertView变量是否为空来解决此问题。实际上我省略了if/else子句。
我使用了内存中的缓存=真。因此,下载停止和图像将永远存在。
那为什么我要寻求帮助?主要是因为我知道出于性能原因,我不应该使用if/else子句。我不想搅乱用户的记忆,我想给他们带来快速可靠的用户体验。此外,我想知道什么可能是错误的。
感谢您的帮助。非常知情。
我遇到了与您完全相同的问题,也不想禁用转换视图检查。我的解决方案是在映像加载程序中增加内存缓存大小。
以前,我经常这样使用:<code>。memoryCache(新使用FreqLimitedMemorycache(2*1024*1024))
所以我把它改为:<code>。memoryCache(新的使用FreqLimitedMemorycache(10*1024*1024))
我不知道10*1024*1024是不是太多了还是会出什么问题,但是它好像已经把问题修复给我了,到现在都没出什么问题。
GridView出于性能目的回收列表项。因此,当您滚动时,列表项会在不同的地方被回收,然后您的代码会重新填充它们。有时这会滞后于图像。
我建议使用一个像毕加索这样处理这类事情的图书馆。
加载器需要一些时间在ImageView
中加载picure。因为您对不同的图像重用视图,所以在加载新图像时可以在视图中看到以前的图像。您可以在DisplayImageOptions
中设置resetViewBeforeLoding(true)
以避免这种效果。
此外,您可以使用磁盘缓存来避免每次从网络下载图像。也限制内存缓存的大小和设置其他设置,但我认为内存缓存是有用的,它改善了用户体验。不要忘记使用<code>setOnScrollListener(新的PauseOnScrollListener(loader,true,true))
基本上,我有一个方法可以将Image从数据库加载到ImageView中,还有第二个方法可以更改图像,我成功地运行了这两个方法,没有出现异常,但是在change eImage()方法中的setImage之后,我需要更新什么以及如何(场景、阶段)是可能的。我知道在javafx中没有像swings中的repaint()这样的方法,那么我该如何处理呢?
我正在设计一个具有滚动视图的页面,其上方是表格视图(禁用滚动)。为此,我在这个问题中提到了答案 - 使UITableView不可滚动并调整高度以容纳所有单元格,但没有成功。 视图层次结构以及提供的约束- -主视图 -滚动视图< br >固定在主视图的所有边上(0,0,0,0),限制边距 -内容视图 固定到滚动视图(0,0,0,0),与主视图宽度相等,与主视图高度相等(优先级-250) -内容视图中
我的TableView包含一些数字数据。当我说按按钮编辑值时,它会将单元格的背景更改为绿色。当没有足够的行使表格可滚动时,这种方法很有效。一旦表格变成(或从一开始就是)可滚动的,它就会开始表现出怪异的行为。它会更改已编辑项目的背景,但也会更改在向下滚动之前不可见的项目的背景。然而,当我调试时,更改背景的代码只被调用一次。我认为它与tableview有关,当is scrollable破坏并重新创建单
在应用程序启动时,我试图使用以下代码通过查看加载更改单独视图的位置: 但是,这似乎无法直接在viewDidLoad中工作。如果我使用iAction将to指定给按钮,代码就会工作 我猜我这里遗漏了什么,但我不知道是什么。
我有一个当用户滚动时显示隐藏单元格的tableView。不确定为什么会出现这种情况。 在视图中DidLoad() 用户点击按钮后,表格将以可设置动画的方式展开。 在 func tableView(_ tableView: UITableView, cellForRowAt 索引路径: 索引路径) - 当我滚动时,所有单元格都被隐藏。我看到它们是在单元格中创建的,但是,它们不会出现在我的屏幕上。为什
利用UIScrollView实现视差滚动效果。在demo中,滑动ScrollView,背景图和文字的滚动速度不一样。直接用ScrollView 的协议,对其子视图的坐标进行随机系数比例的位置移动修正,从而实现视差滚动效果。没有用其他的框架,代码简单。 作者说:原创Demo 转载请注明出处。 [Code4App.com]