Olá professor, obrigado pelo retorno, vamos lá... realmente preciso refatora não só o adapter como outras classes obrigado pela dica.
Bom essa tela vem depois que o usuário entra no app e digita as informações nome, e-mail e data para criar um relatório. Essa tela me da a opção de escolher entre dois radiosButtom
Nesse outro print da mesma seção o que eu fiz foi alterar minha decisão e escolher a outra opção o "Não", e
depois vou clicar em salvar, até ai tudo certo sem erros
Veja que é salvo o relatório e me mostra concluído em outra lista de finalizados
Agora quando clico no item da lista de concluídos ele me me abre o PDF que foi gerado ao salvar o relatório, e é ai o problema aparece, veja que existe duas resposta para o mesmo item que selecionei, o que quer dizer que ele pegou os dois clickes que eu dei no radiobuttom gerando duas resposta para a mesma questão
Esse trecho que captura o clique no radioButtom está no Adapter ExpandableRecyclerViewAdapter, pelo que pesquise e como implementei ele está guardando as informações na hora do clique usando setOnCheckedChangeListener, assim os radios selecionados estão sendo colocados na lista listTxtRadio que será chamada para ser salva no banco de dados
//Test onClick RadioButton
((ItemVh) viewHolder).mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
int selectedRadioButtonID = ((ItemVh) viewHolder).mRadioGroup.getCheckedRadioButtonId();
//Test Salve in a ArrayList RadioButton Selected
radioButton = group.findViewById(selectedRadioButtonID);
String selectedText = (String) viewHolder.tvTitleList.getText();
String selectedRadioButtonText = radioButton.getText().toString();
int selectedRadioId = radioButton.getId();
listIDRadio.add(selectedRadioId);
listId.add(position);
listText.add(selectedText);
listTxtRadio.add(selectedRadioButtonText);
E aqui está o método que pega todas as lista preenchidas juntas elas em um JsonArray para ser salva, que ao clicar no button SALVE ele salva no SQLite,, essa parte de código está na classe ReportActivity método handleSave()
// Save Company, Email, Data, List
private void handleSave() {
//testRadio();
final ReportItems reportItems = new ReportItems();
reportItems.setCompany(resultCompany.getText().toString());
reportItems.setEmail(resultEmail.getText().toString());
reportItems.setDate(resultDate.getText().toString());
// ArrayList<String> listText = new ArrayList<>();
// reportItems.setCheckList(listText);
// Convert ArrayList in Json Object
for (int i = 0; (i < mAdapter.listTxtRadio.size()) && (i < mAdapter.listText.size()) && (i < mAdapter.listIDRadio.size()) && (i < mAdapter.listId.size()); i++) {
JSONObject jsObject = new JSONObject();
try {
//jsObject.put("List", job);
jsObject.put("title_list", mAdapter.listText.get(i));
jsObject.put("radio_tx", mAdapter.listTxtRadio.get(i));
jsObject.put("radio_id", mAdapter.listIDRadio.get(i));
jsObject.put("id_list", mAdapter.listId.get(i));
Log.i("log", "Item: " + jsObject + " jsObject");
} catch (JSONException e) {
e.printStackTrace();
}
jsArray.put(jsObject);
}
reportItems.setListJson(jsArray.toString());
Log.i("log", "Item: " + jsArray + " jsArray");
// Finish JsonObject
//Save
if (this.mReportBusiness.insert(reportItems)) {
// Execute Async create PDF
PDFAsyncTask asy = new PDFAsyncTask(this);
asy.execute(reportItems);
Toast.makeText(this, R.string.txt_report_save, Toast.LENGTH_SHORT).show();
finish();
} else {
Toast.makeText(this, R.string.txt_error_save, Toast.LENGTH_SHORT).show();
finish();
}
}