【问题标题】:Losing images from NetworkImageView after Scrolling list up-down上下滚动列表后从 NetworkImageView 丢失图像
【发布时间】:2015-08-31 06:03:34
【问题描述】:

我有一个 ListView,它使用 Volley Json 抓取带有相关图像的新闻。 起初它会加载所有内容,但是当我滚动列表并返回时,它有时会显示图像,有时不会。滚动2-3次后listview 丢失所有图像。我的测试应用程序(仅使用操作栏标签)完美运行,所以我不知道发生了什么。提前感谢您的宝贵时间。

注意:我使用来自开发者网站的MySingleton 和LruBitmapCache。我的应用程序的 GUI 类似于 Play 商店,即带有标签的导航抽屉。我搜索了这样的问题,但没有找到直接的答案。抱歉,在这里问的问题很愚蠢。

如果我使用 ViewHolder,则该问题得到解决,但如果 URL 不存在,我无法以编程方式删除 NetworkImageView。 我不想为没有图像的行添加占位符图像

这是我的行布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="8dp">

<com.android.volley.toolbox.NetworkImageView
    android:id="@+id/cat_thumbnail"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:layout_alignParentLeft="true"
    android:layout_marginRight="8dp"
    />

<TextView
    android:id="@+id/cat_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="16dp"
    android:layout_alignTop="@id/cat_thumbnail"
    android:layout_toRightOf="@id/cat_thumbnail"
    />

<TextView
    android:id="@+id/cat_paper"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/cat_title"
    android:layout_marginTop="1dip"
    android:layout_toRightOf="@+id/cat_thumbnail"
    android:textSize="15dip" />

适配器类

private Activity activity;
private LayoutInflater inflater;
private List<NewsArticles> newsArticlesItems;
ImageLoader imageLoader;

public NewsAdapter(Activity activity, List<NewsArticles> newsArticlesItems)
{
    this.activity = activity;
    this.newsArticlesItems = newsArticlesItems;
}

@Override
public int getCount() {
    return newsArticlesItems.size();
}

@Override
public Object getItem(int location) {
    return newsArticlesItems.get(location);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int postion, View convertView, ViewGroup viewGroup) {

    if(inflater == null)
    {
        inflater = (LayoutInflater) activity.getSystemService(activity.LAYOUT_INFLATER_SERVICE);
    }
    if(convertView == null)
    {
        convertView = inflater.inflate(R.layout.cat_list_items, null);
    }
    if (imageLoader == null)
        imageLoader = MySingleton.getInstance(activity).getImageLoader();
    //Article image
    NetworkImageView thumbnail = (NetworkImageView) convertView.findViewById(R.id.cat_thumbnail);

    //Article title
    TextView title = (TextView) convertView.findViewById(R.id.cat_title);

    //Newspaper Name
    TextView newspaperName = (TextView) convertView.findViewById(R.id.cat_paper);

    //


    if(!URLUtil.isValidUrl(newsArticlesItems.get(postion).getThumbnailUrl()))
    {
        thumbnail.setVisibility(View.GONE);
    }
    /*if(newsArticlesItems.get(postion).getThumbnailUrl()=="")
    {
        thumbnail.setVisibility(View.GONE);
    }*/
    else
    {
        thumbnail.setImageUrl(newsArticlesItems.get(postion).getThumbnailUrl(), imageLoader);
    }

    title.setText(newsArticlesItems.get(postion).getTitle());
    newspaperName.setText(newsArticlesItems.get(postion).getNewspaperName());

    return convertView;
}

【问题讨论】:

  • newsArticlesItems.get(postion).getThumbnailUrl()=="" -> TextUtils.isEmpty(newsArticlesItems.get(postion).getThumbnailUrl())
  • @njzk2 我正在执行你的建议让你知道
  • @njzk2 执行您的建议后,NetworkImageView 仍然存在问题
  • @njzk2 感谢您的宝贵时间。

标签: android android-listview android-volley networkimageview


【解决方案1】:

在 else 块中这样尝试

else
    {
        thumbnail.setVisibility(View.VISIBLE);//add this
        thumbnail.setImageUrl(newsArticlesItems.get(postion).getThumbnailUrl(), imageLoader);
    }

【讨论】:

  • 这里你使用的是convertView,它被重复使用,不会总是膨胀..可能在你的测试应用中你总是膨胀
  • 它是否适用于 ViewHolder?为了顺利过渡?
  • 解释:您的列表中可能有一个或多个无效的 url。一旦显示出来,图像视图就会被隐藏,并由于回收而传播到其他列表项。
  • @njzk2 我使用了在 if(UrlUtil) 下方注释的 If 语句。
猜你喜欢
  • 1970-01-01
  • 2017-04-09
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多