如何从 URL 获取图像资源

How can i get a image resource from an URL

我尝试使用库“Picasso”,但它需要一个预先创建的 ImageView,我试图将它放入一个新的 ImageView,但是当我放入 id 时ImageView 会给我一个错误。

我正在使用此代码创建 ImageView:

    val photo  = ImageView(applicationContext)

    photo.id = variable1
              
    Scroll.addView(photo) 

我正在使用这段代码来放置图像:

Picasso.get().load("$url").into(variable1)

这行不通,所以我认为将照片放入预先创建的 ImageView 中然后获取该 ImageView 的图像引用并将其提供给新的 ImageView 是一个好主意:

var photoResource = R.id.borramePerro.getResource()
photo.setImageResource(photoResource)

但是没用。有什么想法吗?

    class InicioSesionGoogle: AppCompatActivity() {
    
    
       override fun onCreate(savedInstanceState: Bundle?) {

         super.onCreate(savedInstanceState)
         setContentView(R.layout.google)}

        
       var urlImagen : String

       var variable1 = 1
       fun showPhoto(url: String){
            val photo  = ImageView(applicationContext)
            
            Picasso.get().load("$url").into(variable1)

            photo.id = variable1
            
            Scroll.addView(photo)




            
            println("Photo set :D   $url with the id of: $variable1")
            variable1++

           
        }

Xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="visible">

    

    

    <ScrollView
        android:id="@+id/ScrollVieww"
        android:layout_width="310dp"
        android:layout_height="204dp"
        android:layout_marginTop="32dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <LinearLayout
            android:id="@+id/Scroll"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" />
    </ScrollView>

    
    <ImageView
        android:id="@+id/borramePerro"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:srcCompat="@tools:sample/avatars" />
</androidx.constraintlayout.widget.ConstraintLayout>

最好使用View.generateViewId()为您的视图生成id,小数字可能已经被R占用了。

photo.id = View.generateViewId()

虽然您根本不需要 ID 来使用 Picasso,只需执行以下操作:

val photo = ImageView(context)
Picasso.get().load(url).into(photo)

由于您使用的是 Kotlin,因此您可能想看看 Coil。它比 Picasso 对 Kotlin 更友好。另外,请注意 "$url" 是无用的,可能是 CPU 的额外工作(当然微不足道)。