我有一个观点,即从FragmentActivity中膨胀。此视图包含包含imageview的自定义布局的列表视图。图像从网址下载。我正在使用Picasso处理图像缓存等。我已经实现了我能够找到的每个解决方案,但我的列表视图仍然非常滚动。
播放列表
LayoutInflater inflater = LayoutInflater.from(context);
playlistFrame = inflater.inflate(R.layout.playlist_frame, parent, false);
swipeView = (SwipeRefreshLayout) playlistFrame.findViewById(R.id.swipe);
playlistView = (ListView) playlistFrame.findViewById(R.id.playlist_view);
playlistView.setOnScrollListener(new PlaylistScrollListener(context, SCROLL_TAG));
swipeContainer = (FrameLayout) playlistFrame.findViewById(R.id.swipeContainer);
playlist = list;
videoPosition = 0;
Report listContents[] = new Report[list.size()];
list.toArray(listContents);
playlistView.setAdapter(getListAdapter(listContents));
...
private ArrayAdapter<Report> getListAdapter(final Report item[]) {
return new ArrayAdapter<Report>(context, R.layout.playlist_item_frame, item) {
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.playlist_item_frame, parent, false);
}
final TextView title = (TextView) convertView.findViewById(R.id.playlist_title);
title.setText(item[position].getTitle());
final TextView date = (TextView) convertView.findViewById(R.id.playlist_date);
date.setText(item[position].getDate());
final TextView description = (TextView) convertView.findViewById(R.id.playlist_description);
description.setText(item[position].getDescription());
final ImageView itemImage = (ImageView) convertView.findViewById(R.id.playlist_thumb);
itemImage.setScaleType(ImageView.ScaleType.FIT_XY);
Picasso.with(context).load(item[position].thumbnailURLs.standard)
.tag(SCROLL_TAG)
.fit()
.placeholder(R.drawable.playlist_thumbnail)
.error(R.drawable.playlist_thumbnail)
.centerInside()
.into(itemImage);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectPost(position);
}
});
return convertView;
}
};
}
播放列表滚动侦听器
public class PlaylistScrollListener implements AbsListView.OnScrollListener {
private final Context context;
private String scrollTag;
public PlaylistScrollListener(Context context, String tag) {
this.context = context;
this.scrollTag = tag;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
final Picasso picasso = Picasso.with(context);
if (scrollState == SCROLL_STATE_IDLE || scrollState == SCROLL_STATE_TOUCH_SCROLL) {
picasso.resumeTag(scrollTag);
} else {
picasso.pauseTag(scrollTag);
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
// Do nothing.
}
}
非常感谢任何改进此滚动问题的帮助。