プレビュー画像を行にロードするリストビューがありますが、少し下にスクロールして行を再表示すると、画像をダウンロードして再デコードする必要があるかのように、画像が再読み込みされるようです。現在、画像をロードするために AQuery を使用していますが、Novoda の Image Loader、Nostra の Universal Image Loader、および ImageViews 自体を「リロード」してみました。
これが私の簡略化された getView メソッドです(画像は下部に挿入されます):
@Override
public View getView(int position, View convertView, ViewGroup parent) {
FrameLayout postItem = (FrameLayout) convertView;
//final PostHolder holder;
if(null == postItem){
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
postItem = (FrameLayout) inflater.inflate(R.layout.column_post, parent, false);
}
final AQuery aq = new AQuery(postItem);
JSONObject thePost = null;
try {
thePost = mPosts.getJSONObject(position).getJSONObject("data");
} catch (Exception e) {
System.out.println("errreoroer");
}
String postThumbnailUrl = null;
String author = null;
String domain = null;
String subreddit = null;
int votes = 0;
int numComments = 0;
long createdUtc = 0;
final HashMap<String, Object> postData = new HashMap<String, Object>();
try {
postData.put("title", thePost.getString("title"));
//parse thumbnail
postThumbnailUrl = thePost.getString("thumbnail");
postData.put("url", thePost.getString("url"));
postData.put("permalink", thePost.getString("permalink"));
postData.put("is_self", thePost.getBoolean("is_self"));
//whent it was made
createdUtc = thePost.getLong("created_utc");
//author
author = thePost.getString("author");
subreddit = thePost.getString("subreddit");
domain = thePost.getString("domain");
votes = thePost.getInt("ups") - thePost.getInt("downs");
//num_comments
numComments = thePost.getInt("num_comments");
} catch (Exception e) {}
//gets the direct url to the image
mSmartContent.getDirectMedia((String)postData.get("url"), new Callbacks() {
@Override
public void callback(Object obj) {
Bundle cData = (Bundle)obj;
if (cData.getString("type") == "pic") {
aq.id(R.id.imagePreview).visibility(View.VISIBLE).image((String)cData.getString("url"));
} else {
aq.id(R.id.imagePreview).visibility(View.GONE);
}
}
});
return postItem;
}
前もって感謝します。