サーバーから ImageView に画像をロードするリストビューがあります。Listview はビューホルダー パターンを実装し、行の非常に単純な相対レイアウトを備えています。画像の遅延読み込みについては、universalimageloader の picasso を試しましたが、現在は google volley に基づいた glide を使用しています。ただし、プレースホルダー画像をサーバー画像に置き換えている間、リストビューはまだ途切れており、理由がわかりません。アダプターコードは次のとおりです。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
News newsItem = getItem(position);
if (rowView == null) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(mResource, null);
// Create a viewHolder enabled row
NewsViewHolder viewHolder = new NewsViewHolder();
viewHolder.newsTitle = (TextView) rowView.findViewById(R.id.news_title);
viewHolder.newsSubTitle = (TextView) rowView.findViewById(R.id.news_sub_title);
viewHolder.newsDescription = (TextView) rowView.findViewById(R.id.news_desc);
viewHolder.newsDate = (TextView) rowView.findViewById(R.id.news_date);
viewHolder.newsThumb = (ImageView) rowView.findViewById(R.id.news_thumb);
rowView.setTag(viewHolder);
}
NewsViewHolder holder = (NewsViewHolder) rowView.getTag();
// Fill in fields of the current row of the NewsListView
holder.newsTitle.setText(newsItem.title);
holder.newsSubTitle.setText(newsItem.subTitle);
holder.newsDescription.setText(newsItem.desciption);
holder.newsDate.setText(SimpleDateFormat.getDateInstance().format(new Date(Long.parseLong(newsItem.date) * 1000)));
Glide.load(newsItem.imageThumb)
.centerCrop()
.placeholder(R.drawable.placeholder)
.into(holder.newsThumb);
return rowView;
}
}
/*
* ViewHolder class for NewsListView
*/
public static class NewsViewHolder {
public TextView newsTitle;
public TextView newsSubTitle;
public TextView newsDescription;
public TextView newsDate;
public ImageView newsThumb;
}
初めてリストをスクロールしている間だけリストが途切れるので、画像を取得してグライドでリストに貼り付けます。画像がリストビューに貼り付けられた後、スクロールは最初からバターのようにスムーズです。
私は何を間違えましたか?ハングアップの原因を効率的に見つけるにはどうすればよいですか? 私は Traceview の専門家ではなく、ふるいにかけるために大量のデータを生成しています。
助けてくれてありがとう!