Tenho um banco de dados desta forma:
String carroSQL = "CREATE TABLE Carro (carro_id INTEGER PRIMARY KEY, carro_nome TEXT NOT NULL);";
String carroPerguntaSQL = "CREATE TABLE CarroPergunta (cpergunta_id INTEGER PRIMARY KEY, cpergunta TEXT NOT NULL);";
String carroRespostaSQL = "CREATE TABLE CarroResposta (cresposta_id INTEGER PRIMARY KEY," +
"idCarro INTEGER REFERENCES Carro(carro_id)," +
"idPergunta INTEGER REFERENCES CarroPergunta(cpergunta_id)," +
"cresposta_desc TEXT);";
Estou fazendo a inserção de resposta atraves deste metodo:
public void inserir(RespostaCarro resposta) {
ContentValues values = new ContentValues();
values.put("idCarro", resposta.getIdCarro());
values.put("idPergunta", resposta.getIdPergunta());
values.put("cresposta_desc", resposta.getResposta());
dao.getWritableDatabase().insert("CarroResposta", null, values);
}
E reconhecendo os dados desta forma:
public class InspecaoActivity extends AppCompatActivity {
private TextView nomeInsp, campoPergunta,idCarro,idPergunta;
private int indicePerguntaAtual = 0;
private Button proximaPergunta;
private PerguntaCarro perguntaAtual;
private RadioButton c,nc,na;
private RadioGroup rg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_inspecao);
setTitle("");
carregaNomeDoCheckList();
criarComponentes();
}
private void botaoProximo() {
proximaPergunta = findViewById(R.id.proximaPergunta);
proximaPergunta.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
responde();
}
});
}
private void atualizaFormularioComPerguntaAtual() {
RespostaCarro resposta = new RespostaCarro();
pCarroDAO dao = new pCarroDAO(InspecaoActivity.this);
List<PerguntaCarro> perguntas = dao.buscaPerguntaCarro();
if (indicePerguntaAtual < perguntas.size()) {
perguntaAtual = perguntas.get(indicePerguntaAtual);
campoPergunta.setText(perguntaAtual.getPergunta());
idPergunta.setText(perguntaAtual.getId().toString());
resposta.setIdCarro(Long.valueOf(idCarro.getText().toString()));
resposta.setIdPergunta(Long.valueOf(idPergunta.getText().toString()));
if (c.isChecked()) {
resposta.setResposta(c.getText().toString());
} else if (nc.isChecked()) {
resposta.setResposta(nc.getText().toString());
} else {
resposta.setResposta(na.getText().toString());
}
dao.inserir(resposta);
}else{
finish();
}
}
public void responde() {
indicePerguntaAtual++;
atualizaFormularioComPerguntaAtual();
}
@Override
protected void onResume() {
super.onResume();
atualizaFormularioComPerguntaAtual();
botaoProximo();
}
private void criarComponentes() {
idCarro = findViewById(R.id.idCarro);
idPergunta = findViewById(R.id.idPergunta);
nomeInsp = findViewById(R.id.nomeInsp);
campoPergunta = findViewById(R.id.pergunta);
proximaPergunta = findViewById(R.id.proximaPergunta);
campoPergunta = findViewById(R.id.pergunta);
c = findViewById(R.id.conforme);
nc = findViewById(R.id.nConforme);
na = findViewById(R.id.nSeAplica);
rg = findViewById(R.id.radioGroup);
}
private void carregaNomeDoCheckList() {
if (nomeInsp != null) {
Intent intent = getIntent();
Inspecao inspecao = (Inspecao) intent.getSerializableExtra("nome");
nomeInsp = findViewById(R.id.nomeInsp);
nomeInsp.setText(inspecao.getNome());
} else {
Intent intent = getIntent();
Carro carro = (Carro) intent.getSerializableExtra("carro");
nomeInsp = findViewById(R.id.nomeInsp);
nomeInsp.setText(carro.getNome());
idCarro = findViewById(R.id.idCarro);
idCarro.setText(carro.getId().toString());
}
}
}
Eu consigo inserir as respostas normalmente, entretanto a resposta da pergunta 1 não fica salva corretamente, ela sempre vai para pergunta 2 ou então para a ultima pergunta.