Изображение в строковых данных, которые я получаю от API, не загружается. Я использую класс Пикассо для загрузки изображения. Хотя изображение можно загрузить в Imageview, тег изображения, определенный в строке, не извлекается. Я попробовал использовать класс Glide и Picasso в качестве решения, но не смог найти больше решений, поскольку получил ошибку.
ContentDetail. Java
Код: Выделить всё
public class ContentDetail extends AppCompatActivity {
ContentDetailBinding makDet;
MakalelerAdapter contentsAdp;
CompositeDisposable compositeDisposable;
Retrofit retrofit;
ArrayList content;
private String BASE_URL = "https://aa.com.tr/";
@Override
protected void onCreate(Bundle savedInstanceState) {
makDet=ContentDetailBinding .inflate(getLayoutInflater());
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
Gson gson = new GsonBuilder().setLenient().create();
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
loadData();
setContentView(makDet.getRoot());
}
private void loadData(){
final Contents contentApi = retrofit.create(Contents.class);
compositeDisposable = new CompositeDisposable();
int getId=getIntent().getIntExtra("content_id",0);
Log.i("id",String.valueOf(getId));
compositeDisposable.add(contentApi.getContent(getId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::handleResponse, Throwable::printStackTrace)
);
}
private void handleResponse(List contentData) {
Log.i("dxx",contentData.get(0).content_image);
if(contentData.isEmpty()){
Snackbar.make(makDet.getRoot(),"İçerik Bulunamadı",Snackbar.LENGTH_LONG).show();
}else{
Log.i("dxx",contentData.get(0).content_image);
ContentsApi content = new ArrayList(contentData).get(0);
TextView info = makDet.detailInfo;
// info.setText(Html.fromHtml(content.content_text,Html.FROM_HTML_MODE_COMPACT));
Spannable html;
/*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Log.i("Hata bimp","hata2");
html = (Spannable) Html.fromHtml(content.content_text, Html.FROM_HTML_MODE_LEGACY, new PicassoImageGetter(info), null);
} else {
Log.i("hata bimp","hata");
html = (Spannable) Html.fromHtml(content.content_text, new PicassoImageGetter(info), null);
}
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
html = (Spannable) Html.fromHtml(content.content_text, Html.FROM_HTML_MODE_LEGACY, new PicassoImageGetter(info), null);
} else {
html = (Spannable) Html.fromHtml(content.content_text, new PicassoImageGetter(info), null);
}
info.setText(html);
Picasso.get().load(Uri.parse(content.content_image)).fit().into(imageView);
}
}
}
Код: Выделить всё
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.text.Html;
import android.util.Log;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import io.reactivex.annotations.NonNull;
import io.reactivex.annotations.Nullable;
public class PicassoImageGetter implements Html.ImageGetter {
private TextView textView;
public PicassoImageGetter(TextView textView) {
this.textView = textView;
}
public Drawable getDrawable(String source) {
// Use Glide or Picasso to load the WebP image
Glide.with(textView.getContext())
.load(source)
.into(new CustomTarget() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition
Подробнее здесь: [url]https://stackoverflow.com/questions/79375877/android-java-restfull-api-string-in-img-tag-not-loading-problem[/url]
Мобильная версия