问题描述: 我创建的文章与同时通过我的SQLite数据库填充缩略图的滚动列表。一般来说,它是“工作”,除了速度慢:图片不被本地缓存(采用通用图像装载机) - 慢图像加载时间
图像加载非常缓慢......我认为使用“Universal Image Loader”在设备上缓存的图像,这将使他们似乎只是滚动查看if你已经看过他们(或至少接近那个)。但是 - 当你向上/向下拖动,没有图像在那里,然后3-5秒后,图像开始弹出(好像它正在重新下载它们)
我改变缩略图的可见性即时通讯盒,但它的工作完美无瑕 - 它们看起来并没有改变 - 它们只是滚动查看或不查看,不闪烁或任何东西。 (但之后图像不会再出现几秒钟)。
我已经通过在滚动后删除我的PHP脚本进行了测试...当我滚动回prev spot时,图像不显示 - 使我假设它每次都从我的PHP脚本加载。
但根据the docs:“UsingFreqLimitedMemoryCache(超过缓存大小限制时,最常用的位图被删除) - 默认情况下使用”
详情:
在我ArticleEntryAdapter.js
我有:
@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
// We need to get the best view (re-used if possible) and then
// retrieve its corresponding ViewHolder, which optimizes lookup efficiency
final View view = getWorkingView(convertView);
final ViewHolder viewHolder = getViewHolder(view);
final Article article = getItem(position);
// Set the title
viewHolder.titleView.setText(article.title);
//Set the subtitle (subhead) or description
if(article.subtitle != null)
{
viewHolder.subTitleView.setText(article.subtitle);
}
else if(article.description != null)
{
viewHolder.subTitleView.setText(article.description);
}
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.displayImage("", viewHolder.thumbView); //clears previous one
if(article.filepath != null && article.filepath.length() != 0) {
imageLoader.displayImage(
"http://img.sltdb.com/processes/resize.php?image=" + article.filepath + "&size=100&quality=70",
viewHolder.thumbView
);
viewHolder.thumbView.setVisibility(View.VISIBLE);
} else {
viewHolder.thumbView.setVisibility(View.GONE);
}
return view;
}
至于图像是不正确的 - 它不经常,但有时同时滚动,我会看到2个相同的图像,而当我看着这些文章时,它们根本不相关(即没有机会实际拥有相同的图像)。所以 - 我滚动它,然后回滚,并且它不再是不正确的形象。
注意:我是Java/Android新手 - 您可能已经注意到了。根据注释请求
更多代码:
private View getWorkingView(final View convertView) {
// The workingView is basically just the convertView re-used if possible
// or inflated new if not possible
View workingView = null;
if(null == convertView) {
final Context context = getContext();
final LayoutInflater inflater = (LayoutInflater)context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
workingView = inflater.inflate(articleItemLayoutResource, null);
} else {
workingView = convertView;
}
return workingView;
}
UPDATE: 我的清单文件有:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
不过我发现缓存文件夹完全是空的:
mnt
-sdcard
-Android
-data
-com.mysite.news
-cache
-uil-images
是什么'getWorkingView(convertView);'? – 2012-07-17 05:54:22
@Sherif elKhatib - 增加了 – Dave 2012-07-17 12:53:23