Мне нужно разобрать контент, который приходит с сайта WordPress (URL). Поскольку он содержит данные вместе с тегами, я использую AppCompatTextView для отображения текста и создал собственный класс java для обработки изображения (тега).
Я взял ссылку ниже.
https://medium.com/@rajeefmk / android -textview-and-image-loading-from-url-part-1-a7457846abb6 .
ПРИМЕЧАНИЕ. Я сделал несколько изменений в своем коде по сравнению с кодом, приведенным в приведенной выше ссылке.
Теперь проблема в том, что для изображения выделяется место на экране, а изображение - готов к загрузке. Но изображение не загружается.
Я использовал Toast для отображения при вызове onPrepareLoad ().
Ниже приведен мой пользовательский класс java для обработки изображения.
public class PicassoImageGetter implements Html.ImageGetter {
private AppCompatTextView textView = null;
private Context context;
public PicassoImageGetter(AppCompatTextView target, Context context) {
this.textView = target;
this.context = context;
}
@Override
public Drawable getDrawable(String source) {
BitmapDrawablePlaceHolder drawable = new BitmapDrawablePlaceHolder();
Picasso.get()
.load(source)
.placeholder(R.drawable.error_loading_image)
.error(R.drawable.error_loading_image)
.into(drawable);
return drawable;
}
private class BitmapDrawablePlaceHolder extends BitmapDrawable implements Target {
protected Drawable drawable;
public void setDrawable(Drawable drawable) {
this.drawable = drawable;
int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();
drawable.setBounds(0, 0, width, height);
setBounds(0, 0, width, height);
if (textView != null) {
textView.setText(textView.getText());
}
}
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
setDrawable(new BitmapDrawable(context.getResources(), bitmap));
}
@Override
public void onBitmapFailed(Exception e, Drawable errorDrawable) {
Toast.makeText(context, "failed to load images", Toast.LENGTH_SHORT).show();
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
Toast.makeText(context, "Prepared" , Toast.LENGTH_SHORT).show();
Log.d("prepared","prepared" + placeHolderDrawable);
}
}
}
NOTE : я использовал get (), где App.get () используется в getDrawable ()
Ниже фрагмента кода для установки данных в AppCompatTextView:
PicassoImageGetter imageGetter = new PicassoImageGetter(articleContent, getApplicationContext());
Spannable html;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
html = (Spannable) Html.fromHtml(content, Html.FROM_HTML_MODE_LEGACY, imageGetter, null);
}else
{
html = (Spannable) Html.fromHtml(content, imageGetter, null);
}
articleContent.setText(html); // setting content to text view
, где articleContent - мой контент AppCompatTextView и
- мои данные для анализа.