Как загрузить изображение с сервера в RecyclerviewAndroid

Форум для тех, кто программирует под Android
Ответить
Гость
 Как загрузить изображение с сервера в Recyclerview

Сообщение Гость »


In my application I want use nested recyclerviews.
One of these Recyclerview for show list of data and another Recyclerview should show list of images.
Such as below image:
Изображение


I have strange problem!
When my images more than one, copy image one and replace with other images!
For show images from server, server send to me base64 and I decode it and then show into adapter.
My Adapter code for show list :
class TestsListAdapterSimple(val items: List) : RecyclerView.Adapter() { private lateinit var context: Context override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val binding = ItemTestHistoryBinding.inflate(LayoutInflater.from(parent.context), parent, false) context = parent.context return ViewHolder(binding) } override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.bind(items[position]) holder.setIsRecyclable(false) } override fun getItemCount() = items.size inner class ViewHolder(private val binding: ItemTestHistoryBinding) : RecyclerView.ViewHolder(binding.root) { @SuppressLint("SetTextI18n", "CheckResult") fun bind(item: Result) { binding.apply { if (item.files != null) { if (item.files.isNotEmpty()) { val imagesAdapter = ImagesAdapterSimple(item.files.toMutableList(), context) //imagesAdapter.setData(item.files) avatarImg.apply { addItemDecoration(OverlapRecyclerViewDecoration(3, -100)) layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false) setHasFixedSize(true) adapter = imagesAdapter } } } //Click binding.root.setOnClickListener { onItemClickListener?.let { it(item) } } } } } private var onItemClickListener: ((Result) -> Unit)? = null fun setOnItemClickListener(listener: (Result) -> Unit) { onItemClickListener = listener } } My adapter code for show images :
class ImagesAdapterSimple(val items: MutableList, val context: Context) : RecyclerView.Adapter() { private val userToken by lazy { GoodPrefs.getInstance().getString(USER_TOKEN, "") } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ImagesAdapterSimple.ViewHolder { val inflater = LayoutInflater.from(parent.context) val binding = ItemCircleImagesBinding.inflate(inflater, parent, false) return ViewHolder(binding) } override fun onBindViewHolder(holder: ImagesAdapterSimple.ViewHolder, position: Int) { holder.bind() holder.setIsRecyclable(false) } override fun getItemCount() = if (items.size > 2) 3 else 1 inner class ViewHolder(private val binding: ItemCircleImagesBinding) : RecyclerView.ViewHolder(binding.root) { @SuppressLint("CheckResult") fun bind() { binding.apply { items.forEach { item -> avatarLoading.visibility = View.VISIBLE ApiClient.getInstance().apisUseCase().getAvatarImage(userToken, item.id!!) .applyIoScheduler() .subscribe({ avatarLoading.visibility = View.GONE if (it.isSuccessful) { if (it.code() == 200) { if (it.body() != null) { val decodedBytes: ByteArray = Base64.decode(it.body()!!.data!!.file, Base64.DEFAULT) avatarImg.load(decodedBytes) } } } }, { avatarLoading.visibility = View.GONE }) } } } } } How can I fix it?


Источник: https://stackoverflow.com/questions/780 ... cyclerview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»