我正在尝试Interactive Console
为其中一个 Android 应用程序实现一个。我正在为此使用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)
}
}
}
但是,现在这不是加载现有的 text MessageHolders/Layouts
。我想使用现有的消息单元类型以及这种额外的 Carousal 类型的消息布局。
我在这里做错了吗?为什么其他现有内容类型不起作用?