0

I have a horizontal list of images that I receive from api, I want to implement saving one of the items in a separate folder. How can I add an additional element to the end of my list that will have a different appearance, I want to use it as storage for the user?

My Adapter

Сlass ImagesAdapter : RecyclerView.Adapter<ImagesAdapter.ViewHolder>() {
private var images: List<Image> = ArrayList()

fun setList(newImages: List<Image>) {
    images = newImages
    notifyDataSetChanged()
}

override fun getItemCount() = images.size

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.bind(images[position])
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val view: View =
            LayoutInflater.from(parent.context).inflate(R.layout.item_images, parent, false)
    return ViewHolder(view)
}

var onItemClickListener: (Image) -> Unit = {}


inner class ViewHolder(private val viewItem: View) : RecyclerView.ViewHolder(viewItem) {

    fun bind(image: Image) {
  
        viewItem.apply {
            title.text = image.title
            setOnClickListener {
                onItemClickListener(image)
            }

            val request = ImageRequest.Builder(context)
                .data(image.imageUrl)
                .target(
                    onStart = {//todo},
                    onSuccess = { imageMini.setImageDrawable(it)},
                ).build()
            context.imageLoader.enqueue(request)
        }
    }
}

api get me 4 images, i'm want add 5 additional item like folder

Qrampus
  • 39
  • 4

1 Answers1

0
  1. Create a generic list.
  2. add all your existing items to that list
  3. add your new item to the end of the list
  4. create two types of viewtype based on instances from generic list
  5. create two viewholders with different layouts
  6. then on oncreateviewholder method decide which view holder to attach based on view type.

May be refer this answer: https://stackoverflow.com/a/46454246/2404063

Kannan_SJD
  • 1,022
  • 2
  • 13
  • 32