Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 延迟加载不适用于使用截击的RecyclerView_Android_Lazy Loading_Android Volley_Android Recyclerview - Fatal编程技术网

Android 延迟加载不适用于使用截击的RecyclerView

Android 延迟加载不适用于使用截击的RecyclerView,android,lazy-loading,android-volley,android-recyclerview,Android,Lazy Loading,Android Volley,Android Recyclerview,我能够解析json(文本+图像)提要,并在RecyclerView中以网格方式显示它们。如问题中所述,我正在使用Volleylibrary。 我有我的截击单打,LruBitmapCache,如中所述 除了延迟加载部分(即只有在加载所有文本和图像后,视图才可见)之外,所有操作都正常。当然,理想的方法是先加载文本,而不等待图像下载,这是我目前无法实现的 myRecyclerView适配器的onBindViewHolder @Override public void onBindViewHolder(

我能够解析
json
(文本+图像)提要,并在
RecyclerView
中以网格方式显示它们。如问题中所述,我正在使用
Volley
library。 我有我的
截击单打
LruBitmapCache
,如中所述

除了延迟加载部分(即只有在加载所有文本和图像后,视图才可见)之外,所有操作都正常。当然,理想的方法是先加载文本,而不等待图像下载,这是我目前无法实现的

my
RecyclerView适配器的
onBindViewHolder

@Override
public void onBindViewHolder(final ViewHolder viewHolder, int position) {
    final FeedItemBangCake item = feedItems.get(position);
    viewHolder.name.setText(item.getName());
    viewHolder.price.setText("Rs." + String.valueOf(item.getPrice()));
    viewHolder.prodId.setText(String.valueOf(item.getUniProdId()));
    if (imageLoader == null)
        imageLoader = AppController.getInstance().getImageLoader();


    // Feed image
    if (item.getImge() != null) {


        imageLoader.get(item.getImge(), new ImageLoader.ImageListener() {
            @Override
            public void onResponse(ImageLoader.ImageContainer imageContainer, boolean b) {
                viewHolder.feedImageView.setImageUrl(imageContainer.getRequestUrl(), imageLoader);
                viewHolder.feedImageView.setVisibility(View.VISIBLE);

            }

            @Override
            public void onErrorResponse(VolleyError volleyError) {

            }
        });


    } else {
        viewHolder.feedImageView.setVisibility(View.GONE);
    }
}
getJsonData()
-片段中负责发出截击请求的方法

 private void getJsonData(String URL_FEED_DATA) {

    // first check for cached request
    Cache cache = AppController.getInstance().getRequestQueue().getCache();
    Cache.Entry entry = cache.get(URL_FEED_DATA);
    if (entry != null) {
        // fetch the data from cache
        try {
            String data = new String(entry.data, "UTF-8");
            try {
                parseJsonFeed(new JSONObject(data));                    
            } catch (JSONException e) {
                e.printStackTrace();
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

    } else {
        // making fresh volley request and getting json
        JsonObjectRequest jsonReq = new JsonObjectRequest(Request.Method.GET,
                URL_FEED_DATA, null, new Response.Listener<JSONObject>() {

            @Override
            public void onResponse(JSONObject response) {
                VolleyLog.d(TAG, "Response: " + response.toString());
                if (response != null) {
                    parseJsonFeed(response);                        
                }
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d(TAG, "Error: " + error.getMessage());

                    } catch (Exception e) {

                    }
                }
            }
        });
        // Adding request to volley request queue
        AppController.getInstance().addToRequestQueue(jsonReq);

    }
当文本被另一个请求加载时,对图像进行单独的截击请求是一个好主意吗

注意:我提到的教程也涉及延迟加载。我按照教程中的步骤进行操作,但在我的情况下仍然延迟加载,无法正常工作

检查这个答案检查这个答案
        Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {
            @Override
            public void run() {

            }
        });