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

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как загрузить изображение с сервера в Recyclerview

Сообщение Anonymous »

ДЕЙСТВИТЕЛЬНО МНЕ НУЖНА ЭТА ПОМОЩЬ, ПОЧЕМУ НЕ ПОМОЧЬ МНЕ? :(
В моем приложении я хочу использовать вложенные представления recyclerview.

Один из этих представлений Recyclerview для отображения списка data и другое Recyclerview должно отображать список изображений.

Например, изображение ниже:

Изображение

У меня странная проблема!

Когда у меня больше одного изображения, скопируйте одно изображение и замените его другими изображениями!

Чтобы показать изображения с сервера, сервер отправляет мне base64, и я декодирую его, а затем показываю в адаптере.
< /p>
Код моего адаптера для шоу-листа:

Код: Выделить всё

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
}
}
Код моего адаптера для показа изображений:

Код: Выделить всё

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
})
}
}
}
}
}
Как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/780 ... cyclerview
Ответить

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

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

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

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

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