【问题标题】:Why won't my images not load in Recyclerview为什么我的图片无法在 Recyclerview 中加载
【发布时间】:2019-09-05 03:36:02
【问题描述】:

Glide 不会加载我与recycler view 上的产品链接的图像。图片应从我的PHPMySQL 数据库中提取。不太确定我做错了什么。请帮忙

我尝试了一些在网上找到的解决方案,但没有一个对我有用。

private String image;

以上是我的产品列表中的字符串标识符

 //loading the image
    Glide.with(mCtx)
            .load(product.getImage())
            .into(holder.imageView);
    holder.textViewPlateNumber.setText(product.getPlatenumber());
    holder.textView1.setText(product.getMake());
    holder.textView2.setText(product.getModel());
    holder.textView3.setText(product.getYear());
    holder.textViewName.setText(product.getName());
    holder.textDate.setText(product.getDate());

    holder.recyclerid.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            String platenumber = productList.get(position).getPlatenumber();
            String make = productList.get(position).getMake();
            String model = productList.get(position).getModel();
            String year = productList.get(position).getYear();
            String name = productList.get(position).getName();
            String date = productList.get(position).getDate();
            String vin = productList.get(position).getVin();
            String displacement = productList.get(position).getDisplacement();
            String fueltype = productList.get(position).getFueltype();
            String transmission = productList.get(position).getTransmission();
            String mileage = productList.get(position).getMileage();
            String ownerorcompany = 
     productList.get(position).getOwnerorcompany();
            String homeorcompanyaddress = 
  productList.get(position).getHomeorcompanyaddress();
            String contactnumber = 
 productList.get(position).getContactnumber();
             String emailaddress = productList.get(position).getEmailaddress();
            String facebook = productList.get(position).getFacebook();
            String image = productList.get(position).getImage();

以上是我用来显示适配器上每个项目图像的代码。

 <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/imageView"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:src="@drawable/car_avatar"
            app:civ_border_color="@color/cta"
            app:civ_border_width="2dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/guideline17"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

以上是图像在我的 xml 文件中的布局方式。保存在我的phpsql 上的其余项目显示在列表中,但图像除外。这是我的php 文件的样子:

$vehicle = array(); 
while ($row=mysqli_fetch_array($sql)) {
 $temp = array();



 $temp['id'] = $row['VehicleID']; 
 $temp['platenumber'] = $row['PlateNumber']; 
 $temp['make'] = $row['Make']; 
 $temp['model'] = $row['Model']; 
 $temp['year'] = $row['Year']; 
 $temp['name'] = $row['OwnerorCompany']; 
 $temp['date'] = $row['AddDate']; 
 $temp['image'] = $row['vehicleImage'];
 $temp['vin'] = $row['Vin'];
 $temp['displacement'] = $row['Displacement']; 
 $temp['fueltype'] = $row['FuelType'];
 $temp['transmission'] = $row['Transmission'];
 $temp['mileage'] = $row['Mileage'];
 $temp['ownerorcompany'] = $row['OwnerorCompany'];
 $temp['homeorcompanyaddress'] = $row['HomeorCompanyAddress'];
 $temp['contactnumber'] = $row['ContactNumber'];
 $temp['emailaddress'] = $row['EmailAddress'];
 $temp['facebook'] = $row['FacebookID'];

 array_push($vehicle, $temp);


 }
 echo json_encode($vehicle);
 //}
 ?>

这就是图像在我的数据库中保存的方式:

    $photo = $_POST['photo'];

    $id=uniqid();

    $path = "vehicle_upload/$id.jpeg";
    $finalpath = "http://192.168.0.10/widevalueautoInc 
    2/server/api/".$path;

当我运行该应用程序时,一切正常,除了图像未显示在列表中。这是我用来保存图片和大小的java代码。

 private void addVehicle(String stringImage) {
 }

public String getStringImage(Bitmap bitmap){
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);

    byte[] imageByteArray = byteArrayOutputStream.toByteArray();
    String encodedImage = Base64.encodeToString(imageByteArray, 
 Base64.DEFAULT);
    return encodedImage;
}
}

【问题讨论】:

  • 做两件事。 1:将您的适配器代码放入问题中。 2:查看包含图片路径的列表值吗?
  • @WendellDaguno,您是否在浏览器上查看了image URL
  • @RakeshKumar - 是的,我做到了,图像效果很好。事实上,当我保存它们时,它们会转到正确的文件夹。
  • @WendellDaguno,您的图像似乎太大了,这可能会导致占位符加载延迟。尝试在 Glide 上调整图像大小可能对您有用。
  • @RakeshKumar 我发布了用于将图像保存在服务器中的 java 代码。

标签: android android-glide android-image


【解决方案1】:

删除圆形图像视图并使用默认图像视图,以使用圆形裁剪..使用 Glide 圆形裁剪功能....

Glide.with(context).load("dddd").apply(RequestOptions.circleCropTransform()).into(imageview);

【讨论】:

  • 这几乎完成了工作!你非常感谢所有花时间来帮助我的人。非常感谢!
  • @WendellDaguno 如果您的问题已解决,那么您可以在解决方案上单击绿色。
【解决方案2】:

只需在您的实用程序类中创建一个通用方法,如下所示:

public static void setCircularImageToGlide(final Context context, final CircularImageView imageView, String imageUrl) {
        Glide.with(context).load("" + imageUrl).asBitmap().placeholder(R.drawable.ic_photo_placeholder).transform(new CircleTransform(context)).into(new BitmapImageViewTarget(imageView) {
            @Override
            protected void setResource(Bitmap resource) {
                RoundedBitmapDrawable circularBitmapDrawable =
                        RoundedBitmapDrawableFactory.create(context.getResources(), resource);
                circularBitmapDrawable.setCircular(true);
                imageView.setImageDrawable(circularBitmapDrawable);
            }
        });
    }

我已将CircularImageView 作为参数传递给您正在使用CircularImageView 而不是简单的ImageView 的方法。

在您需要将图像设置到CircularImageView 的任何地方如下调用它:

CommonUtil.setCircularImageToGlide(YOUR_CONTEXT, YOUR_CIRCULAR_IMAGE_VIEW, "" + YOUR_IMAGE_URL);

我正在使用以下依赖项:

implementation 'com.github.bumptech.glide:glide:3.7.0'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-10
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多