我正在尝试根据某种类型以及它们是否按顺序对列表进行分组
data class Item(val type: Int, val name: String)
private fun splitItems(items: List<Item>): List<List<Item>> {
val groupedItems = mutableListOf<List<Item>>()
var tempList = mutableListOf<Item>()
items.mapIndexed { index, item ->
if (index > 0) {
val previousItem = items[index - 1]
if (previousItem.type == item.type) {
tempList.add(item)
} else {
if (tempList.isNotEmpty()) groupedItems.add(tempList)
tempList = mutableListOf()
tempList.add(item)
}
} else tempList.add(item)
}
if (tempList.isNotEmpty()) groupedItems.add(tempList)
return groupedItems
}
Run Code Online (Sandbox Code Playgroud)
现在这个乐趣将需要
val items = mutableListOf(
Item(1, "Shirt"),
Item(1, "Shirt"),
Item(2, "Pant"),
Item(2, "Pant"),
Item(2, …Run Code Online (Sandbox Code Playgroud) 所以,我用于Koin依赖注入,这是我在活动中所做的
class ModuleDetailActivity : AppCompatActivity() {
private lateinit var moduleId:String
private lateinit var levelModule:Level.Module
private val moduleViewModel: ModuleViewModel by viewModel { parameterOf(moduleId, levelModule) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
...
moduleId = intent.getString("module_id")
levelModule = intent.getParcelable("level_module")
...
...
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我有多个ModuleDetailActivity可以添加或替换的片段,并且我希望在这些片段中使用相同的实例,moduleViewModel而不在内部传递任何参数Fragment。
class ModuleDetailFragment : Fragment() {
private val moduleViewModel: ModuleViewModel by sharedViewModel()
...
...
}
Run Code Online (Sandbox Code Playgroud)
我知道这会引发错误,正如预期的那样,您可以看到这个
Caused by: org.koin.core.error.InstanceCreationException: Could not create instance for [Factory:'****.ui.module.ModuleViewModel']
Run Code Online (Sandbox Code Playgroud)
这就是我初始化模块的方式
val viewModelModule = module …Run Code Online (Sandbox Code Playgroud) 我想将列表中的项目彼此配对
例子
list("A","B","C") to -> list(Pair(A,B),Pair(A,C),Pair(B,C))
list("A","B","C","D") to -> list(Pair(A,B),Pair(A,C),Pair(A,D),Pair(B,C),Pair(B,D),Pair(C,D))
Run Code Online (Sandbox Code Playgroud)
我尝试过使用zipWithNext,但它对我的事业没有帮助。如果有人可以告诉我如何实现这一目标?