如何在Android的ChatKit库中创建额外的消息布局?

时间:2018-08-13 09:38:30

标签: android kotlin chatkit

我正在尝试为其中一个Android应用程序实现Interactive Console。我为此使用ChatKit。除了现有的消息布局,我想使用自定义消息类型,布局和视图持有人。

这就是我所做的。

    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

                }

            })

这是CardListViewHolder.kt文件

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)

        }

    }

}

但是,现在这不会加载现有文本MessageHolders/Layouts。我想使用现有的消息单元格类型以及这种额外的Carousal类型的消息布局。

我在这里做错了吗?为什么其他现有内容类型不起作用?

0 个答案:

没有答案