Estou fazendo um checklist pre definido salvo no banco, porem não consigo atualizar o checkbox marcado para o banco de dados. Segue o codigo, fiz o teste de debug que sempre dar erro na parte “Boolean checkTarefa”. Nao consigo achar uma solucao que funcione no meu código.
Segue meu código: Main Activity:
public class MainActivity extends AppCompatActivity { EditText codigoTarefa; Button btnSalvar; CheckBox tarefaChBox; TextView nomeTarefa; ListView listTarefas; BancoDados db = new BancoDados(this); Tarefa t = new Tarefa(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); codigoTarefa = findViewById(R.id.codigoTarefa); btnSalvar = findViewById(R.id.btnSalvar); tarefaChBox = findViewById(R.id.tarefaChBox); nomeTarefa = findViewById(R.id.nomeTarefa); if (db.listaTodasTarefas().size() == 0) { db.addTarefa(new Tarefa("Tarefa1", 0)); db.addTarefa(new Tarefa("Tarefa2", 0)); db.addTarefa(new Tarefa("Tarefa3", 0)); } btnSalvar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Boolean checkTarefa = tarefaChBox.isChecked(); for (int i = 0; i <= 3; i++) { t = db.selecionarTarefa(i); if (checkTarefa.booleanValue() == true) { db.atualizaTarefa(new Tarefa(i, t.getNometarefa(), 1)); } else { db.atualizaTarefa(new Tarefa(i, t.getNometarefa(), 0)); } } } }); listTarefas = findViewById(R.id.listaTarefa); ArrayAdapter adapter = new TarefaAdapter(this, listarTarefas()); listTarefas.setAdapter(adapter); } private ArrayList<Tarefa> listarTarefas() { ArrayList<Tarefa> tarefas = new ArrayList<Tarefa>(); for (int i = 1; i <= 3; i++) { t = db.selecionarTarefa(i); //Exibir tarefas no listView tarefas.add(new Tarefa(t.getNometarefa(), t.getTarefa())); } return tarefas; } }
Classe TarefaAdapter:
public class TarefaAdapter extends ArrayAdapter<Tarefa> { private final Context context; private final ArrayList<Tarefa> tasks; public TarefaAdapter(Context context, ArrayList<Tarefa> tasks) { super(context, R.layout.tarefa, tasks); this.context = context; this.tasks = tasks; } public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View rowView = inflater.inflate(R.layout.tarefa, parent, false); TextView nomeTarefa = rowView.findViewById(R.id.nomeTarefa); CheckBox nomeCheck = rowView.findViewById(R.id.tarefaChBox); nomeTarefa.setText(tasks.get(position).getNometarefa()); if (nomeCheck.isChecked()) { tasks.get(position).getTarefa(); } return rowView; } }
Classe Banco de dados:
public class BancoDados extends SQLiteOpenHelper { private static final int VERSAO_BANCO = 1; private static final String BANCO_TAREFA = "bd_tarefas"; private static final String TABELA_TAREFA = "tb_tarefas"; private static final String COLUNA_CODIGO = "codigoTarefa"; private static final String COLUNA_NOME = "nomeTarefa"; private static final String COLUNA_CHECK = "checkTarefa"; public BancoDados(Context context) { super(context, BANCO_TAREFA, null, VERSAO_BANCO); } @Override public void onCreate(SQLiteDatabase db) { String QUERY_COLUNA = "CREATE TABLE " + TABELA_TAREFA + "(" + COLUNA_CODIGO + " INTEGER PRIMARY KEY, " + COLUNA_NOME + " TEXT, " + COLUNA_CHECK + " INTEGER ); "; db.execSQL(QUERY_COLUNA); } @Override public void onUpgrade(SQLiteDatabase db, int i, int i1) { } /*CRUD ABAIXO*/ void addTarefa(Tarefa tarefa) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUNA_NOME, tarefa.getNometarefa()); values.put(COLUNA_CHECK, tarefa.getTarefa()); db.insert(TABELA_TAREFA, null, values); db.close(); } Tarefa selecionarTarefa(int codigo) { SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(TABELA_TAREFA, new String[]{COLUNA_CODIGO, COLUNA_NOME, COLUNA_CHECK}, COLUNA_CODIGO + " = ? ", new String[]{ String.valueOf(codigo)}, null, null, null, null); if (cursor != null) { cursor.moveToFirst(); } Tarefa tarefa = new Tarefa(Integer.parseInt(cursor.getString(0)) , cursor.getString(1), Integer.parseInt(cursor.getString(2))); return tarefa; } void atualizaTarefa(Tarefa tarefa) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUNA_NOME, tarefa.getNometarefa()); values.put(COLUNA_CHECK, tarefa.getTarefa()); db.update(TABELA_TAREFA, values, COLUNA_CODIGO + " = ?" , new String[]{String.valueOf(tarefa.getCodigotar())}); } public List<Tarefa> listaTodasTarefas() { List<Tarefa> listaTarefas = new ArrayList<Tarefa>(); String query = "SELECT * FROM " + TABELA_TAREFA; SQLiteDatabase db = this.getWritableDatabase(); Cursor c = db.rawQuery(query, null); if (c.moveToFirst()) { do { Tarefa tarefa = new Tarefa(); tarefa.setCodigotar(Integer.parseInt(c.getString(0))); tarefa.setNometarefa(c.getString(1)); tarefa.setTarefa(Integer.parseInt(c.getString(2))); listaTarefas.add(tarefa); } while (c.moveToNext()); } return listaTarefas; } }
Classe Tarefa:
public class Tarefa { private int codigotar; private String nometarefa; private int tarefa = 0; public Tarefa() { } //insert data public Tarefa(String _nometarefa, int _tarefa) { this.nometarefa = _nometarefa; this.tarefa = _tarefa; } //update public Tarefa(int _codigotar, String _nometarefa, int _tarefa) { this.codigotar = _codigotar; this.nometarefa = _nometarefa; this.tarefa = _tarefa; } public int getCodigotar() { return codigotar; } public void setCodigotar(int codigotar) { this.codigotar = codigotar; } public String getNometarefa() { return nometarefa; } public void setNometarefa(String nometarefa) { this.nometarefa = nometarefa; } public int getTarefa() { return tarefa; } public void setTarefa(int tarefa) { this.tarefa = tarefa; } }