工具类优化
This commit is contained in:
@@ -15,19 +15,17 @@ object GlobalData {
|
|||||||
/**
|
/**
|
||||||
* 横排数量
|
* 横排数量
|
||||||
*/
|
*/
|
||||||
var arrayCross: Int = 5
|
var arrayCross: Int = 2
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 竖排数量
|
* 竖排数量
|
||||||
*/
|
*/
|
||||||
var arrayVertical: Int = 11
|
var arrayVertical: Int = 11
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 排列方式 0 垂直 1 水平
|
* 排列方式 0 垂直 1 水平
|
||||||
*/
|
*/
|
||||||
var arrayMode: Int = 0
|
var arrayMode: Int = 0
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -18,26 +18,19 @@ object ListArrangementUtil {
|
|||||||
defaultValue: EquipmentUserInfo = EquipmentUserInfo()
|
defaultValue: EquipmentUserInfo = EquipmentUserInfo()
|
||||||
): List<EquipmentUserInfo> {
|
): List<EquipmentUserInfo> {
|
||||||
Timber.d("horizontalSortPageItem")
|
Timber.d("horizontalSortPageItem")
|
||||||
// 填充缺失的数据,确保能被 columns 整除
|
require(columns > 0) { "Columns must be positive" }
|
||||||
val filledList = if (list.size % columns != 0) {
|
|
||||||
list + List(columns - (list.size % columns)) { defaultValue }
|
|
||||||
} else {
|
|
||||||
list
|
|
||||||
}
|
|
||||||
|
|
||||||
|
val filledList = list.padToMultiple(columns, defaultValue)
|
||||||
val chunks = filledList.chunked(columns)
|
val chunks = filledList.chunked(columns)
|
||||||
|
|
||||||
return (0 until columns)
|
return (0 until columns)
|
||||||
.windowed(2, 2, partialWindows = true)
|
.windowed(2, 2, partialWindows = true)
|
||||||
.flatMap { group ->
|
.flatMap { group ->
|
||||||
when (group.size) {
|
when (group.size) {
|
||||||
2 -> chunks.flatMap { listOf(it[group[0]], it[group[1]]) }
|
2 -> chunks.flatMap { listOf(it[group[0]], it[group[1]]) }
|
||||||
1 -> chunks.flatMap {
|
1 -> chunks.flatMap {
|
||||||
listOf(
|
listOf(it[group[0]], EquipmentUserInfo(equipmentBoxCode = null))
|
||||||
it[group[0]],
|
|
||||||
EquipmentUserInfo(equipmentBoxCode = null)
|
|
||||||
)
|
|
||||||
}.dropLast(1)
|
}.dropLast(1)
|
||||||
|
|
||||||
else -> error("Unexpected group size")
|
else -> error("Unexpected group size")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -48,18 +41,12 @@ object ListArrangementUtil {
|
|||||||
*/
|
*/
|
||||||
fun verticalSortItem(list: List<EquipmentUserInfo>): List<EquipmentUserInfo> {
|
fun verticalSortItem(list: List<EquipmentUserInfo>): List<EquipmentUserInfo> {
|
||||||
Timber.d("verticalSortItem")
|
Timber.d("verticalSortItem")
|
||||||
val users = if (list.size % 2 != 0) {
|
val users = list.padToEvenSize()
|
||||||
Timber.d("列表长度必须是偶数")
|
|
||||||
list + EquipmentUserInfo()
|
|
||||||
} else {
|
|
||||||
list
|
|
||||||
}
|
|
||||||
|
|
||||||
val half = users.size / 2
|
val half = users.size / 2
|
||||||
val firstHalf = users.take(half)
|
|
||||||
val secondHalf = users.drop(half)
|
|
||||||
|
|
||||||
return firstHalf.zip(secondHalf) { a, b -> listOf(a, b) }.flatten()
|
return users.take(half)
|
||||||
|
.zip(users.drop(half)) { a, b -> listOf(a, b) }
|
||||||
|
.flatten()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -70,12 +57,32 @@ object ListArrangementUtil {
|
|||||||
cols: Int
|
cols: Int
|
||||||
): List<EquipmentUserInfo> {
|
): List<EquipmentUserInfo> {
|
||||||
Timber.d("convertToColumnFirst")
|
Timber.d("convertToColumnFirst")
|
||||||
|
require(cols > 0) { "Columns must be positive" }
|
||||||
|
|
||||||
val rows = ceil(original.size.toDouble() / cols).toInt()
|
val rows = ceil(original.size.toDouble() / cols).toInt()
|
||||||
return List(original.size) { pos ->
|
return List(original.size) { pos ->
|
||||||
val row = pos % rows
|
original.getOrNull(pos % rows * cols + pos / rows) ?: EquipmentUserInfo()
|
||||||
val col = pos / rows
|
}
|
||||||
val originalPos = col + row * cols
|
}
|
||||||
original[originalPos]
|
|
||||||
|
// 提取的扩展函数
|
||||||
|
private fun List<EquipmentUserInfo>.padToMultiple(
|
||||||
|
multiple: Int,
|
||||||
|
defaultValue: EquipmentUserInfo
|
||||||
|
): List<EquipmentUserInfo> {
|
||||||
|
return if (size % multiple != 0) {
|
||||||
|
this + List(multiple - (size % multiple)) { defaultValue }
|
||||||
|
} else {
|
||||||
|
this
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun List<EquipmentUserInfo>.padToEvenSize(): List<EquipmentUserInfo> {
|
||||||
|
return if (size % 2 != 0) {
|
||||||
|
Timber.d("列表长度必须是偶数")
|
||||||
|
this + EquipmentUserInfo()
|
||||||
|
} else {
|
||||||
|
this
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user