在Listview中使用ImageView的一些行

时间:2015-12-24 05:39:30

标签: android listview android-listview universal-image-loader

在下面的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);
    }
}

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

3 个答案:

答案 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;
}

Refer this solution for more details