@file:Suppress("DEPRECATION") package xyz.adjutor.aniki import android.annotation.SuppressLint import android.graphics.Bitmap import android.graphics.BitmapFactory import android.os.AsyncTask import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView class TopMangaAdapter(val mangaList: List) : RecyclerView.Adapter() { // Describes an item view and its place within the RecyclerView class MangaViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val mangaTitle: TextView = itemView.findViewById(R.id.tv_title) val mangaRank: TextView = itemView.findViewById(R.id.tv_rank) val mangaImage: ImageView = itemView.findViewById(R.id.iv_image) } // Returns a new ViewHolder override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MangaViewHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_layout, parent, false) return MangaViewHolder(view) } // Returns size of data list override fun getItemCount(): Int { return mangaList.size } // Displays data at a certain position override fun onBindViewHolder(holder: MangaViewHolder, position: Int) { val currentManga: TopManga = mangaList[position] holder.mangaTitle.text = currentManga.title holder.mangaRank.text = currentManga.rank.toString() DownloadImageFromInternet(holder.mangaImage).execute(currentManga.image_url) } @SuppressLint("StaticFieldLeak") private inner class DownloadImageFromInternet(var imageView: ImageView) : AsyncTask() { override fun doInBackground(vararg urls: String): Bitmap? { val imageURL = urls[0] var image: Bitmap? = null try { val `in` = java.net.URL(imageURL).openStream() image = BitmapFactory.decodeStream(`in`) } catch (e: Exception) { Log.e("Error Message", e.message.toString()) e.printStackTrace() } return image } override fun onPostExecute(result: Bitmap?) { imageView.setImageBitmap(result) } } }