В моем приложении я делаю запрос с Retrofit для получения байтового массива. Затем мне нужно сохранить этот байт [] в HashMap и после этого загрузить с Glide.Хорошо, вот мой код.
public class SimpleClass extends AppCompatActivity {
private Activity activity = SimpleClass.this;
private ImageView imageView;
private HashMap<String, byte[]> imageHashMap;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getImageBytes("Image1");
}
public void getImageBytes(final String imageName) {
Call<ResponseBody> getChatImage = retrofitClient.getImagesBytes(imageName);
getChatImage.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
try {
imageHashMap.put("Key1", response.body().bytes());
Glide.with(activity).load(response.body().bytes()).fitCenter().into(imageView);
} catch (Exception e) {
Toast.makeText(activity, "Error cought in catch block: " + e.toString(), Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
} else {
Toast.makeText(activity, "Response is not successful: " + response.errorBody(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Toast.makeText(activity, "An error occurred", Toast.LENGTH_SHORT).show();
}
});
}
}
Поэтому, когда я хочу поместить байт [] в HashMap, я получаю такую ошибку в блоке catch - java.io.IOException: Content-Length (25139) and stream length (0) disagree
.Поэтому, когда я удаляю эту строку - imageHashMap.put("Key1", response.body().bytes());
, все работает нормально.Так почему я не могу поместить byte [] в HashMap?Да и еще один вопрос тоже.Что было бы хорошо использовать: HashMap или LinkedHashMap?