最近再做这样一个事情,一个车分很多个视角面,左侧面,右侧面,前侧,后侧,顶侧等,每个侧面又有很多传感器,这些传感器通过CAN signal去串接,然后有三种状态,这里当点击一个Bad或者Need Clean状态的Sensor的时候,需要按照一定顺序把所有出问题的Sensor在viewpager中进行展示,Logic如下
这里,我抽出了一个简化模型,在这个模型上去验证可行性。
相当于是一个流水线,蓝色框框是三种视图,左右侧和前侧,红色小方框是对应侧面的sensor位置,01,02,03代表这些sensor虽然在不同视角下但是获取sensor状态的api是同一个,因为多个视角下有重复出现的关系,OK了家人们。下面开始搭建模型:
两个固定顺序序列,
indexArray不变的,变的是posArray。
我这边需要做的是,点击任意一个postion,都能返回一个集合,让viewpager去加载对应的视图。
public class TestOrder {
companion object {
val indexArray: IntArray = intArrayOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
val posArray: IntArray = intArrayOf(Constants.POSITION_FRR_01,
Constants.POSITION_FRR_02,
Constants.POSITION_RFRR_01,
Constants.POSITION_WCR_02,
Constants.POSITION_RMCR,
Constants.POSITION_LFRR_02,
Constants.POSITION_FRR_03,
Constants.POSITION_WCR_03,
Constants.POSITION_RFRR_02,
Constants.POSITION_WCR_01,
Constants.POSITION_LMCL,
Constants.POSITION_LFRR_01)
var changePosArray: Array<Int?> = arrayOfNulls<Int>(12)
var sensorList: MutableList<SensorStateOnlyPosition> = mutableListOf()
fun getCurrentListOrder(sensorPos: Int): MutableList<SensorStateOnlyPosition> {
val current: Int = posArray.indexOf(sensorPos)
println("current posArray:$current")
val changePosArrayResult = getChangePosArray(current)
for (i in indexArray.indices) {
sensorList.add(SensorStateOnlyPosition(indexArray[i], changePosArrayResult[i]!!))
}
return sensorList
}
fun getChangePosArray(current:Int):Array<Int?>{
changePosArray[0] = posArray[current]
if (current +1 == indexArray.size){//11
// 0 is 19
changePosArray[1] = posArray[0] //16
changePosArray[2] = posArray[1] //17
changePosArray[3] = posArray[2]
changePosArray[4] = posArray[3]
changePosArray[5] = posArray[4]
changePosArray[6] = posArray[5]
changePosArray[7] = posArray[6]
changePosArray[8] = posArray[7]
changePosArray[9] = posArray[8]
changePosArray[10] = posArray[9]
changePosArray[11] = posArray[10]
}
if (current + 2 == indexArray.size) {//10
changePosArray[1] = posArray[11]
changePosArray[2] = posArray[0]
changePosArray[3] = posArray[1]
changePosArray[4] = posArray[2]
changePosArray[5] = posArray[3]
changePosArray[6] = posArray[4]
changePosArray[7] = posArray[5]
changePosArray[8] = posArray[6]
changePosArray[9] = posArray[7]
changePosArray[10] = posArray[8]
changePosArray[11] = posArray[9]
}
if (current + 3 == indexArray.size) {//9
changePosArray[1] = posArray[10]
changePosArray[2] = posArray[11]
changePosArray[3] = posArray[0]
changePosArray[4] = posArray[1]
changePosArray[5] = posArray[2]
changePosArray[6] = posArray[3]
changePosArray[7] = posArray[4]
changePosArray[8] = posArray[5]
changePosArray[9] = posArray[6]
changePosArray[10] = posArray[7]
changePosArray[11] = posArray[8]
}
if (current + 4 == indexArray.size){//8
changePosArray[1] = posArray[9]
changePosArray[2] = posArray[10]
changePosArray[3] = posArray[11]
changePosArray[4] = posArray[0]
changePosArray[5] = posArray[1]
changePosArray[6] = posArray[2]
changePosArray[7] = posArray[3]
changePosArray[8] = posArray[4]
changePosArray[9] = posArray[5]
changePosArray[10] = posArray[6]
changePosArray[11] = posArray[7]
}
if (current + 5 == indexArray.size){//7
changePosArray[1] = posArray[8]
changePosArray[2] = posArray[9]
changePosArray[3] = posArray[10]
changePosArray[4] = posArray[11]
changePosArray[5] = posArray[0]
changePosArray[6] = posArray[1]
changePosArray[7] = posArray[2]
changePosArray[8] = posArray[3]
changePosArray[9] = posArray[4]
changePosArray[10] = posArray[5]
changePosArray[11] = posArray[6]
}
if (current + 6 == indexArray.size){//6
changePosArray[1] = posArray[7]
changePosArray[2] = posArray[8]
changePosArray[3] = posArray[9]
changePosArray[4] = posArray[10]
changePosArray[5] = posArray[11]
changePosArray[6] = posArray[0]
changePosArray[7] = posArray[1]
changePosArray[8] = posArray[2]
changePosArray[9] = posArray[3]
changePosArray[10] = posArray[4]
changePosArray[11] = posArray[5]
}
if (current + 7 == indexArray.size){//5
changePosArray[1] = posArray[6]
changePosArray[2] = posArray[7]
changePosArray[3] = posArray[8]
changePosArray[4] = posArray[9]
changePosArray[5] = posArray[10]
changePosArray[6] = posArray[11]
changePosArray[7] = posArray[0]
changePosArray[8] = posArray[1]
changePosArray[9] = posArray[2]
changePosArray[10] = posArray[3]
changePosArray[11] = posArray[4]
}
if (current + 8 == indexArray.size){//4
changePosArray[1] = posArray[5]
changePosArray[2] = posArray[6]
changePosArray[3] = posArray[7]
changePosArray[4] = posArray[8]
changePosArray[5] = posArray[9]
changePosArray[6] = posArray[10]
changePosArray[7] = posArray[11]
changePosArray[8] = posArray[0]
changePosArray[9] = posArray[1]
changePosArray[10] = posArray[2]
changePosArray[11] = posArray[3]
}
if (current + 9 == indexArray.size){//3
changePosArray[1] = posArray[4]
changePosArray[2] = posArray[5]
changePosArray[3] = posArray[6]
changePosArray[4] = posArray[7]
changePosArray[5] = posArray[8]
changePosArray[6] = posArray[9]
changePosArray[7] = posArray[10]
changePosArray[8] = posArray[11]
changePosArray[9] = posArray[0]
changePosArray[10] = posArray[1]
changePosArray[11] = posArray[2]
}
if (current + 10 == indexArray.size){//2
changePosArray[1] = posArray[3]
changePosArray[2] = posArray[4]
changePosArray[3] = posArray[5]
changePosArray[4] = posArray[6]
changePosArray[5] = posArray[7]
changePosArray[6] = posArray[8]
changePosArray[7] = posArray[9]
changePosArray[8] = posArray[10]
changePosArray[9] = posArray[11]
changePosArray[10] = posArray[0]
changePosArray[11] = posArray[1]
}
if (current + 11 == indexArray.size){//1
changePosArray[1] = posArray[2]
changePosArray[2] = posArray[3]
changePosArray[3] = posArray[4]
changePosArray[4] = posArray[5]
changePosArray[5] = posArray[6]
changePosArray[6] = posArray[7]
changePosArray[7] = posArray[8]
changePosArray[8] = posArray[9]
changePosArray[9] = posArray[10]
changePosArray[10] = posArray[11]
changePosArray[11] = posArray[0]
}
if (current + 12 == indexArray.size){//0
changePosArray[1] = posArray[1]
changePosArray[2] = posArray[2]
changePosArray[3] = posArray[3]
changePosArray[4] = posArray[4]
changePosArray[5] = posArray[5]
changePosArray[6] = posArray[6]
changePosArray[7] = posArray[7]
changePosArray[8] = posArray[8]
changePosArray[9] = posArray[9]
changePosArray[10] = posArray[10]
changePosArray[11] = posArray[11]
}
return changePosArray
}
@JvmStatic fun main(args: Array<String>) {
val testPos :Int = Constants.POSITION_RFRR_01
val currentListOrder:MutableList<SensorStateOnlyPosition> = getCurrentListOrder(testPos)
for ( i in currentListOrder){
println("This is the order start from testPos :$testPos now index i:${i.position}")
}
}
}
}