我有一个带有自定义BaseAdapter的ListView和一个用于过滤列表的搜索工具栏,每次点击工具栏或我放置一个过滤器(读取:每次刷新列表时)都会因图像而闪烁重装...我怎么能避免这个?
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.listview_row, parent, false);
holder = new ViewHolder();
holder.flag = (ImageView) convertView.findViewById(R.id.flag);
holder.name = (TextView) convertView.findViewById(R.id.name);
holder.place = (TextView) convertView.findViewById(R.id.place);
convertView.setTag(holder);
}
else
holder = (ViewHolder) convertView.getTag();
holder.name.setText(customList.get(position).name);
holder.place.setText(customList.get(position).city + ", " +
customList.get(position).region + ", " +
customList.get(position).state);
String url = context.getString(R.string.main_server) + "flags/" + customList.get(position).state.toLowerCase() + ".png";
Glide.with(context).load(url).into(holder.flag);
return convertView;
}
答案 0 :(得分:0)
将图像保存到缓存,不会再次获取它们,并在每次应用过滤器时再次设置。以下是
的代码apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.AUTOMATIC))
注意:这是滑翔4.0.0。
答案 1 :(得分:0)
看起来我自己找到了答案,但我仍然不知道它为什么会起作用......如果对任何人都有用,我会留下它: 将装载部分更改为此
Glide.with(context).load(url).apply(new RequestOptions().fitCenter().override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)).into(holder.flag);
解决了这个问题。