1

プレビュー画像を行にロードするリストビューがありますが、少し下にスクロールして行を再表示すると、画像をダウンロードして再デコードする必要があるかのように、画像が再読み込みされるようです。現在、画像をロードするために 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;

}

前もって感謝します。

4

1 に答える 1

0

画像をメモリに保持しないと、再読み込みする必要があります (キャッシュまたはネットワークから)。

ViewPager が画面外のページをロードするのと同様に、ビューがビューポートに表示される前にビューをプリロード (バインド) することで、このような表示を回避できますが、イメージ ローダーとは関係ありません。

于 2016-11-15T13:30:31.573 に答える