1

I am trying to implement a Interactive Console for one of the Android application. I am using ChatKit for this. Apart from the existing message layouts, I want to use a custom message type,layout & view holder.

This is what I did.

    val CONTENT_TYPE_CARD_LIST= "5".toByte()
    val holders = MessageHolders().registerContentType(CONTENT_TYPE_CARD_LIST,
            CardListViewHolder::class.java,R.layout.card_list_layout,
            CardListViewHolder::class.java,R.layout.card_list_layout,
            object : MessageHolders.ContentChecker<Message>{
                override fun hasContentFor(message: Message?, type: Byte): Boolean {

                    if (type.toString().equals("5"))
                        return true
                    return false

                }

            })

Here is the CardListViewHolder.kt file

class CardListViewHolder(itemView: View?) : MessageHolders.BaseMessageViewHolder<Message>(itemView) {

    var cardsListView : RecyclerView

    init {

        cardsListView = itemView?.findViewById(R.id.cardList)!!


    }


    override fun onBind(data: Message?) {


        print("Checking")



    }

    class CardListAdapter : RecyclerView.Adapter<CardItemViewHolder>() {

        var listItems : Array<CardItem> = emptyArray()

        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CardItemViewHolder {

            return CardItemViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.card_item,parent,false))
        }

        override fun getItemCount(): Int {

            return listItems.size
        }

        override fun onBindViewHolder(holder: CardItemViewHolder, position: Int) {


            holder.cardTitle?.text = listItems[position].cardTitle
            holder.cardSummary?.text = listItems[position].cardSummary
            Picasso.get().load(Uri.parse(listItems[position].cardImageUrl)).into(holder.cardIcon)

        }

    }

    class CardItemViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView) {

        var cardTitle : TextView ?= null
        var cardSummary : TextView ?= null
        var cardIcon : ImageView ?= null

        init {

            cardTitle = itemView?.findViewById(R.id.cardTitle)
            cardSummary = itemView?.findViewById(R.id.cardSummary)
            cardIcon = itemView?.findViewById(R.id.cardIcon)

        }

    }

}

But, now this is not loading the existing text MessageHolders/Layouts. I want to use the existing message cell types along with this extra Carousal kind of message layout.

Did I do something wrong here ? Why other existing content types not working ?

Milind Mevada
  • 3,145
  • 1
  • 14
  • 22
Bharath
  • 3,001
  • 6
  • 32
  • 65

0 Answers0