Sincronizar id do contato com o id no banco de dados

Eu tenho a variavel id na minha classe Contato, mas de nada me adianta ter esse campo se ele indifere do campo _id do banco de dados que é autoincrementado. O que eu precisaria é que este campo tambem fosse preenchido de forma auto incremental assim como no banco, como se a essa variavel id fosse atribuido automaticamente o id que esse registro recebeu no banco. Eu já pensei diversas gambiarras pra que isso fique sincronizado mas algo me diz que a API já deve ter algo pronto pra que isso seja feito.
Alguma ajuda?

Boa tarde!

Quando você insere um Model no banco de dados, a dica é não passar o id na inserção, porque se ele já for auto-incrementável no banco, ele vai incrementar automaticamente sem nenhum problema. Ou seja, apenas deixe o campo ID da sua classe Contato vazia (null), e quando for passar os dados para inserção (creio que você deve estar utilizando a classe ContentValues para isto), NÃO PASSE O ID! Nem ao menos crie um put com id = null neste ContentValues, aí automaticamente ele considerará o campo auto-incrementável, se assim estiver no seu banco de dados.

Meu banco de dados não armazena o Model, mas as informações separadas de cada contato como Strings. Tenho uma função que faz uma especie de parse do tipo Contato para o tipo ContentValues. De fato, essa variavel id nao eh atribuida nunca. Mas como o banco sabe que deve atribuir a ela o valor do ID no banco? Pra começar que no banco é integer e na classe é long. É isso que eu nao entendo e fico perdido, saca?

Então, se você está passando com ContentValues, apenas não use o ID, assim como você está fazendo. O banco saberá o seu novo ID justamente por ser auto-incrementável, é como se fosse encapsulada. Então, não se preocupe com ID. Lembrando que o método SQLiteDatabase.insert lhe retorna um Long, que é o ID deste novo registro. Agora, se precisa consultar este ID, pode utilizar normal o seu método de consulta e indicar como Long, já que o Cursor possui um getLong.

Vou explicar melhor.
A minha classe Contato possui dentre as suas variaveis, a Long _id:

public class Contato { private long _id; private String nome; private String idade; private String email; private Bitmap foto; }

O meu banco de dados armazena essas informações separadamente, com cada coluna correspondendo a uma informação:

public void onCreate(SQLiteDatabase db) { String SCRIPT_CRIAR = "create table contatos(" + "_id integer primary key autoincrement," + "nome text not null," + " idade text" + "email text not null," + "foto blob"); }

O metodo que faz o select (query) me retorna um contato instanciado e não um cursor. O que eu precisaria é que a variavel _id desse contato retornado fosse o id que este registro tinha no banco, porque no app eu vou usar esse valor. Como eu faço isso?

O método db.insert retorna o id que ele gerou, você pode seta-lo direto no objeto ou retorna-lo.