2017-07-03 93 views
0

我有一个ArrayMap,我想要一个聊天列表来创建和回收视图。将ArrayMap转换为ArrayList - Kotlin

val chats : ArrayMap<String,Chat>? = ArrayMap() 

RecyclerView.Adapter

class ChatAdapter(var chats : ArrayList<Chat>){ 
    . 
    . 
    . 
} 

我从火力此ArrayMap。获取ArrayList的最佳方式是什么?

回答

2

你不应该在公共构造函数中使用ArrayList(因为这样你就可以根据具体实现来制作自己)。应该是MutableList接口:

class ChatAdapter(var chats : MutableList<Chat>){ 

我猜ArrayMap是通常Map(因为我不知道类)。 你可以只写

val chats : ArrayMap<String,Chat>? = ArrayMap() 
// ... initialize the chat 
val adapter = ChatAdapter(am.values.toMutableList()) 

如果你真的需要ArrayList类由于某种原因,你可以写

val adapter = ChatAdapter(ArrayList(am.values)) 
+0

我不能明白这一点“你不应该在公共构造函数中使用ArrayList(因为那样你就可以根据具体的实现(ArrayList(am.values)) –

+0

我发现这个其他解决方案: ChatAdapter(user.chats.map {it.value} as ArrayList ) –

+0

ArrayList is一个实现,MutableList一个接口。如果可能,请始终使用界面,例如在你的情况下使用构造函数中的接口。因为那样你可以将任何实现(作为ArrayList)传递给你的ChatAdapter。否则你可以传递一个ArrayList。 – guenhter

0

如果你不需要一个ArrayList明确,你可以使用ArrayMap.map()之类的函数这个:

val chats : ArrayMap<String,Chat>? = ArrayMap() 
val list : List<Chat> = chats.map { it.value } 
+0

我在检查过的解决方案上评论了这一点。 –

+0

谢谢。我已经认为它可能在运行时更昂贵,但不确定,所以我认为它可能不会伤害看到另一种可能的方式。至少这不是我猜的完全错误。 – dedda1994