我是Android开发的新手。
我的应用正在使用Hearthstone API。炉石传说是一款在线纸牌游戏。
API将返回卡片图像的URL以及其他信息字符串,例如卡片名称和卡片信息。
不幸的是,API将返回到达404的URL,因此从不显示图像。
如果对我的代码感兴趣的是GIT https://github.com/KaasiSerrano/HearthstoneAPI
我想实现一种逻辑,该逻辑将跳过加载任何未返回正确卡片图像URL的内容。
我正在寻找类似的东西
if(url == [404])
{
skip loading this card and skip to the next card to check if that one has a proper URL or not
}
这是我的改造要求。我认为这应该是我的逻辑,但我不确定。
public void retrofitRequest() {
HearthstoneService hearthstoneService =
RetrofitClientInstance
.getRetrofit()
.create(HearthstoneService.class);
Call<List<Cards>> call = hearthstoneService.loadSetCards(ThisIsSetName);
call.enqueue(new Callback<List<Cards>>() {
@Override
public void onResponse(Call<List<Cards>>call,Response<List<Cards>> response) {
if (response.isSuccessful()) {
assert response.body() != null;
Log.d(TAG, "onResponse" + response.body());
cardAdapter.setData(response.body());
rvCards.setAdapter(cardAdapter);
} else {
assert response.errorBody() != null;
Log.d(TAG, "onResponseError" + response.errorBody().toString());
Toast.makeText(DisplaySetCards.this, "Card Doesn't exist", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<List<Cards>> call, Throwable t) {
}
});
}
我正在使用Glide加载这些图像,但我认为我要查找的代码应该在加载图像之前发生?我不确定。 https://imgur.com/a/H21oHeP
Glide.with(context).load(urlGolden).placeholder(R.drawable.error404card).into(holder.iv_Card_Image);
输出应仅是带有实际URL卡的卡。
答案 0 :(得分:0)
您可以执行以下操作。将图像加载侦听器附加到滑行,如果发生异常,请从列表中删除该项目。
Glide.with(context)
.load(url)
.placeholder(R.color.Black)
.diskCacheStrategy(DiskCacheStrategy.RESULT)
.dontAnimate()
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
// HERE remove that item from the list
Log.d(TAG,e.getLocalizedMessage(),e);
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
return false;
}
})
.into(imageView);