Как настроить ImageView с URL? - PullRequest
0 голосов
/ 27 марта 2020

С моим приложением android я пытаюсь настроить представление изображения с URL-адресом и получаю сообщение об ошибке, что мой объект ImageView является нулевым, ошибка:

"java.lang.IllegalStateException: tvImage must not be null"

Я пытался использовать библиотеку Пикассо и использовать Asyn c. С обоими я получаю сообщение об ошибке, и я не понимаю, почему.

Вот мой код, использующий Asyn c:

Вызов onCreate:

DownloadImage(findViewById(R.id.tvImage)).execute(FeedAdapter.imageUrl)

Это класс для загрузки изображения с URL:

private class DownloadImage(val imageView: ImageView) : AsyncTask<String, Void, Bitmap>() {
    private val TAG = "DonloadImage"

    /** Methods: */
    override fun onPostExecute(result: Bitmap) {
        super.onPostExecute(result)
        imageView.setImageBitmap(result)

    }

    override fun doInBackground(vararg url: String?): Bitmap {
        Log.d(TAG, "doingBackground: starts with ${url[0]}")
        val rssFeed = downloadImage(url[0])

        return BitmapFactory.decodeStream(rssFeed)
    }


    private fun downloadImage(urlPath: String?): InputStream {
        return URL(urlPath).openStream()
    }
}

Вот мой код с использованием Picasso:

 if (tvImage.drawable != null) {
        Picasso.get().load(FeedAdapter.imageUrl).into(tvImage)
    }

Это мой файл макета, включающий imageView:

<TextView
    android:id="@+id/tvName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="40dp"
    android:layout_marginEnd="60dp"
    android:textAlignment="textStart"
    android:textColor="@color/colorPrimary"
    android:textSize="24sp"
    android:textStyle="bold"
    app:layout_constraintEnd_toStartOf="@+id/tvImage"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    tools:text="NBA Live Mobile" />

<TextView
    android:id="@+id/tvArtist"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="32dp"
    android:layout_marginTop="24dp"
    android:layout_marginEnd="24dp"
    android:textAlignment="textStart"
    android:textColor="@color/colorAccent"
    android:textSize="18sp"
    android:textStyle="bold"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/tvName"
    tools:text="Electronic Arts" />

<TextView
    android:id="@+id/tvSummary"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="32dp"
    android:layout_marginTop="16dp"
    android:layout_marginEnd="32dp"
    android:text="TextView"
    android:textColor="@android:color/background_dark"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/tvArtist" />

<ImageView
    android:id="@+id/tvImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:layout_marginEnd="32dp"
    android:layout_marginBottom="16dp"
    app:layout_constraintBottom_toTopOf="@+id/tvArtist"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:srcCompat="@mipmap/ic_launcher" />
...