android - tutorial - Cómo obtener la posición más cercana del elemento seleccionado de gridview(o RecyclerGridview)
tutorial gridview android (1)
Puedo darte una manera fácil de lograr esto. No es perfecto, pero es fácil.
public void getNeareast(int m, int choosedId) {
if (m <= 2) {//too simple ,you can just return the right result;
return;
}
int[] choose = new int[]{-m - 1, -m, -m + 1, -1, 0, +1, m - 1, m, m + 1};
int x = choosedId / m;
int y = choosedId % m;
if (x == 0 || (y == 0 && x == 1)) {//no top data
choose[0] = 0;
choose[1] = 0;
choose[2] = 0;
}
if ((x == m - 1 && y != 0) || x == m) {// no bottom data
choose[6] = 0;
choose[7] = 0;
choose[8] = 0;
}
if (y == 1) { // no left data
choose[0] = 0;
choose[3] = 0;
choose[6] = 0;
}
if (y == 0) {// no right data
choose[2] = 0;
choose[5] = 0;
choose[8] = 0;
}
List<Integer> result = new ArrayList<>();
for (int i = 0; i < 9; i++) {//get choosed data
if (choose[i] != 0) {
result.add(choosedId + choose[i]);
}
}
for (int i : result) {//print result;
Log.d("biu", "biu->" + i);
}
}
Estoy tratando de hacer algo de lógica, pero no puedo alcanzar el resultado real.
Soy use r ecyclerview (GridLayoutManager) .
Tengo una celda de cuadrícula como 3 * 3,5 * 5,7 * 7 ... y así sucesivamente ...
bewlow es imagen de la cuadrícula 3 * 3
Ahora, ¿cuál es mi situación que necesito la posición de la celda más cercana ?
como se muestra en la imagen, describo algunos ejemplos de casos a continuación:
caso 1 :
Celda seleccionada -1
resultado esperado -2,5,4
caso 2: (como en la imagen)
Celda seleccionada -5
resultado esperado -1,2,3,4,6,7,8,9
Caso 3:
Celda seleccionada -6
resultado esperado -3,5,9
Entonces, ¿cómo puedo lograr dinámicamente para todas las celdas 3 * 3,5 * 5,7 * 7 ... etc.