在 Listview 中,一些行与 ImageView

In Listview some rows with ImageView

在下面的 getView 方法中,我在 imageview 中加载图像。 如果某些行没有任何图像,则 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);
    }
}

请忽略我的英文语法错误。

再次设置 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);
}

当您将图像分配给 ImageView 时,您应该将可见性改回 View.VISIBLE。

您应该在您的适配器中同时使用 getViewTypeCount()getItemViewType(int position) 来处理仅在某些行中具有图像的列表视图,简单的 setVisibility(View.VISIBLE) 在您的情况下不起作用,因为 android 加载后缓存你的图像

在你的情况下 getViewTypeCount() 应该 return '2' ,因为你告诉 android 有两种类型的行需要单独缓存并且在 getItemViewType(int position) 你说说那两种是什么

喜欢

if(bean.getImgUrl() == null){
    return 0;
}else{
    return 1;
}

Refer this solution for more details