在下面的getView方法中我正在imageview中加载图片。 如果某些行没有任何图像,那么imageview的可见性将会消失。 我已经为此做了准备。现在我的问题是,在listview中滚动时,带图像的某些行会自动隐藏imageview,而某些行没有任何可以获取这些图像的图像。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if( convertView == null ) {
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.list_items_exhibition, null);
holder.img = (ImageView) convertView.findViewById(R.id.img);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
DataBean bean = (DataBean) list.get(position);
if( bean.getImgUrl() == null ){
holder.img.setVisibility(View.GONE);
} else {
imageloader.displayImage(bean.getImgUrl(), holder.img, option);
}
}
请忽略我的英语语法错误。
答案 0 :(得分:1)
再次设置ImageView的可见性
if( bean.getImgUrl() == null ){
holder.img.setVisibility(View.GONE);
} else {
holder.img.setVisibility(View.VISIBLE); //Add this line
imageloader.displayImage(bean.getImgUrl(), holder.img, option);
}
答案 1 :(得分:1)
当您将图像分配给ImageView时,您应该将可见性更改回View.VISIBLE。
答案 2 :(得分:0)
您应该在适配器中同时使用getViewTypeCount()
和getItemViewType(int position)
来处理仅在某些行中包含图像的listview,简单setVisibility(View.VISIBLE)
在您的情况下无法工作,因为android在获取后会缓存您的图像
在您的情况下getViewTypeCount()
应该返回' 2' ,因为你告诉android有两种类型的行需要单独缓存,而getItemViewType(int position)
你告诉那两种类型是什么
喜欢
if(bean.getImgUrl() == null){
return 0;
}else{
return 1;
}