Android,Glide 显示错误图像约一秒

2023-11-24

我正在使用 Glide 库从 URL 加载图像,这是我从 Graph Request (Facebook) 获得的。它用在 RecyclerAdapter 中。当我滚动时,每个 ImageView 显示错误的图片大约不到一秒,然后纠正一张。这是代码:

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {

    ImageView main_image = viewHolder.main_image,

    getEventCover(position, main_image);

        }

private void getEventCover(int position, final ImageView img){

        GraphRequest request = GraphRequest.newGraphPathRequest(
                AccessToken.getCurrentAccessToken(),
                event.get(position).getEventID(),
                new GraphRequest.Callback() {
                    @Override
                    public void onCompleted(GraphResponse response) {

                        JSONObject data = response.getJSONObject();

                        try {
                            JSONObject cover = data.getJSONObject("cover");
                            String source = cover.getString("source");

                            Glide.with(fragment)
                                    .load(source)
                                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                                    .centerCrop()
                                    .into(img);

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }
        );

        Bundle parameters = new Bundle();
        parameters.putString("fields", "cover");
        request.setParameters(parameters);
        request.executeAsync();
}

你的“问题”是ImageView您正在使用的 s 是从前几行回收的(滚动时消失)。因此你的ImageView in onBindViewHolder已经包含之前的图像。

该图像将一直显示,直到新图像的网络请求(GraphRequest 和 Glide)完成。

为了避免这个问题,你必须清除你的ImageView打电话之前getEventCover。这可以通过设置占位符图像或设置透明图像来完成,如下所示:

main_image.setImageResource(android.R.color.transparent);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android,Glide 显示错误图像约一秒 的相关文章

随机推荐