Você pode usar valores maiores para exibição, como digamos:
apple : 1 000 000
orange : 2 000 000
banana : 3 000 000
Agora, se eu quiser adicionar
potato
na posição 2 (n=2) eu pego a posição n (=> 2 :orange) e (n-1)(=> 1 :apple) e as divido por 2 para obter a nova posição da batata:(1.000.000 + 2.000.000) / 2
=1.500.000
apple : 1 000 000
**potato : 1 500 000**
orange : 2 000 000
banana : 3 000 000
Isso funcionará por muito tempo e, se em algum momento você sentir que esgotou esse esquema, ainda poderá multiplicar todos os valores por 1000.
Você também pode continuar usando valor baixo (1, 2, 3, ...) e definir seu tipo como
DOUBLE
, então eles nunca colidirão ao dividi-los por 2. EDITAR: Sobre colocar a banana na posição 1:
Usando a fórmula (n+(n-1))/2:
Aqui n =1 (nova posição).
Nossos dados são:
apple : 1 000 000
potato : 1 500 000
orange : 2 000 000
banana : 3 000 000
(1 000000+(0))/2
=500.000
Dou a ordem 500 000 à banana:
**banana : 500 000**
apple : 1 000 000
potato : 1 500 000
orange : 2 000 000
Ainda outra solução:crie um campo de texto que seja um indexador e contenha todos os ids.
"1,2,3,4,5,6,7"
Agora, se eu quiser colocar o elemento id 8 entre 3 e 4, basta substituir ",4," por ",8,4,".
Embora seja mais complicado em termos de computação encontrar o elemento no índice n, eu pessoalmente usaria a primeira solução.