Изображение перекрывается при прокрутке списка вверх? - PullRequest
0 голосов
/ 22 мая 2019

Выше стэквью ответы не удовлетворены результатом моего вопроса. Мой вертикальный список содержит изображения URL. Если изображения не получены с URL, отображается заполнитель изображения. Но я прокручиваю список вверх, изображение перекрывается в плацдарме. Пожалуйста, помогите мне кто-нибудь по этому вопросу.

if (view == null) {
    LayoutInflater vi = LayoutInflater.from(context);
    view = vi.inflate(R.layout.my_own, parent, false);
    viewHolder = new ViewHolder(view);
    view.setTag(viewHolder);
} else {
    viewHolder = (ViewHolder) view.getTag();
}
if (filepath != null && !filepath.isEmpty()) {
    final String fileUrl = filepath.get(0);
    Log.d("image", "image" + data);
    if (fileUrl.contains(".jpg") || fileUrl.contains(".png")) { 
        Glide.with(context).asBitmap().load(fileUrl).into(new SimpleTarget < Bitmap > () {
            @Override public void onResourceReady(Bitmap resource, Transition < ? super Bitmap > transition) {
                viewHolder.report_image.setImageBitmap(resource);
                viewHolder.report_image.setScaleType(ImageView.ScaleType.CENTER_CROP);
                FM_ReportFileSystem.saveImageToSdCard(resource, fileUrl);
            }
        });
    }
}

XML:

<de.hdodenhof.circleimageview.CircleImageView android:id="@+id/report_image" 
android:layout_width="85dp" 
android:layout_height="85dp" 
android:layout_marginLeft="@dimen/_8sdp" 
android:layout_marginRight="@dimen/_10sdp" 
android:layout_marginTop="@dimen/_7sdp" 
android:src="@drawable/no_image" 
app:civ_border_color="@color/LightGray" app:civ_border_width="1dp" /> 

Ответы [ 3 ]

0 голосов
/ 22 мая 2019

Попробуйте использовать встроенную функцию-заполнитель Glide и удалите ссылку макета на изображение.

В вашем xml попробуйте изменить

android:src="@drawable/no_image" 

до

tools:src="@drawable/no_image"

Это позволит просматривать изображение в редакторе макетов только для целей разработки / проектирования. Для этого вам может понадобиться импортировать набор инструментов в родительском представлении,

xmlns:tools="http://schemas.android.com/tools 

А затем используйте функцию-заполнитель Glide для автоматической вставки изображения-заполнителя там, где нет альтернативного изображения.

Glide.with(context)
.asBitmap()
.load(fileUrl)
.placeholder(R.drawable.no image)
//...the rest of your code here
0 голосов
/ 22 мая 2019
final ViewHolder viewHolder;
 if (view == null) {
    LayoutInflater vi = LayoutInflater.from(context);
            view = vi.inflate(R.layout.my_own, parent, false);
            viewHolder = new ViewHolder(view);
            view.setTag(viewHolder);        
    } else {
       viewHolder = (ViewHolder) view.getTag();
    }
  viewHolder.report_image.setImageDrawable(null);



if (filepath != null && !filepath.isEmpty()) {

            final String fileUrl = filepath.get(0);
            //Log.d("image", "image" +data);

            if (fileUrl.contains(".jpg") || fileUrl.contains(".png")) {


                if (fileUrl != null) { // simulate an optional url from the data item
                Glide.with(context)
                        .asBitmap()
                        .load(fileUrl)
                        .into(new SimpleTarget<Bitmap>() {
                            @Override
                            public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
                                if (resource == null) {
                                    // holder.setIsRecyclable(true);
                                 //  return;
                                }

                                viewHolder.report_image.setImageBitmap(resource);
                              //  viewHolder.report_image.setScaleType(ImageView.ScaleType.CENTER_CROP);
                                FM_ReportFileSystem.saveImageToSdCard(resource, fileUrl);
                            }
                        });
                }
            }
           }else
        {
            Bitmap icon = BitmapFactory.decodeResource(context.getResources(),
                    R.drawable.no_image);
            viewHolder.report_image.setImageBitmap(icon);
        }
0 голосов
/ 22 мая 2019

Есть идеи о нижней строке?Кажется, нужно получить текущий индекс не всегда 0.final String fileUrl = filepath.get (0);

Также попробуйте выполнить еще одну часть для загрузки изображения.

if (fileUrl.contains(".jpg") || fileUrl.contains(".png")) { 
        Glide.with(context).asBitmap().load(fileUrl).into(new SimpleTarget < Bitmap > () {
            @Override public void onResourceReady(Bitmap resource, Transition < ? super Bitmap > transition) {
                viewHolder.report_image.setImageBitmap(resource);
                viewHolder.report_image.setScaleType(ImageView.ScaleType.CENTER_CROP);
                FM_ReportFileSystem.saveImageToSdCard(resource, fileUrl);
            }
        });
    }else{
//TODO:
viewHolder.report_image.setImageBitmap("Placeholder image");

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...