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
,如中所述
除了延迟加载部分(即只有在加载所有文本和图像后,视图才可见)之外,所有操作都正常。当然,理想的方法是先加载文本,而不等待图像下载,这是我目前无法实现的
myRecyclerView适配器的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() {
}
});