Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação para dispositivos móveis Desenvolvimento de um aplicativo com a persistência de dados com o uso do SQLite no Android Nome: Juliana Tavares Lacerda da Rocha Matrícula: 1200104960 Turno: EAD OBJETIVO: A persistência é um recurso muito importante no desenvolvimento de aplicativos. Saber trabalhar com os diversos tipos de armazenamento permite que você desenvolva projetos mais robustos. O desenvolvimento de projetos com uso de banco de dados, seja local ou remoto, é um pré-requisito para o desenvolvimento de aplicativos modernos. Para a concretização dos conhecimentos obtidos nesta unidade, você deve definir um objeto para a criação de sua classe e desenvolver um projeto com uso de persistência de dados com uso do SQLite no Android para realizar a manutenção dos diferentes registros de armazenamento, com a listagem, inclusão, alteração e exclusão desses registros. Crie um aplicativo Android para trabalhar com uma base de dados com uma tabela para persistência de dados de um objeto escolhido por você. O objeto deve ser definido por meio de uma classe própria, com: · O mínimo de cinco atributos (com uso de três diferentes tipos de dados) mais o atributo id (long). · Pelo menos um método construtor. · Métodos de acesso (setters & getters) para todos os atributos. · Outros métodos que sejam necessários. A aplicação deverá tratar a inclusão, alteração e exclusão dos registros, além de tratar o acesso, abertura e fechamento do recurso do banco de dados do SQLite, com o uso da arquitetura em três camadas. O aplicativo deverá apresentar os dados dos objetos armazenados por meio de uma lista (ListView) e apresentar as funcionalidades de inclusão, exclusão e alteração, que podem ser realizadas de acordo com a sua escolha. Você pode montar as telas a seu critério, desde que atenda aos requisitos de listagem, inclusão, exclusão e alteração dos registros. Resposta: Codigo da activity_main.xmi <?xml version = '‘1.0" encoding = ''utf-8''?> ondroidx.constraintlayout.widget.ConstraintLayout xmlns:android = " http://schemas.android.com/apk/res/android'' xmlns:app=" http://schemas.android.com/apk/res-auto" xm Ins :tools=" http://schemas.android.com/too Is" android:layout_width = "match_parent" android:layout_height="match_parent” tools:context=".MainActivity'‘> <ListView android:id = "@-i-id/lista" android:layout_width = ''312dp" android:layout_height="388dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="36dp" android:layout_marginEnd = "8dp" android:layout_marginRight=''8dp" app:layout_constraintEnd_toEndOf=''parent" app:layout_constraintStart_toStartOf= "parent" app:layout_constraintTop_toTo pOf="parent"></ListView> <Button android:id = "@-i-id/btSair" android:layout_width = "wrap_content'' android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="20dp" android:layout_marginEnd = "8dp" android:layout_marginRight="8dp" android:onClick="sair" android:text=''Sair do Aplicativo" app:layout_constraintEnd_toEndOf= "parent" app:layout_constraintStart_toEndOf="@-i-id/btlncluir'' app:layout_constraintTop_toBottomOf="@-i-id/lista" /> <TextView android:id = "@-i-id/textView" android:layout_width = "wrap_content'' android:layout_height=“wrap_content" android:layout_marginStart="8dp" android:layout_marginLeft=''8dp" android:layout_marginTop="8dp" android:layout_marginEnd = "8dp" android:layout_marginRight="8dp" and ro id :layout_margin Bottom = "8dp" android:text="Gerenciamento de Disciplinas.” app:layout_constraintBottom_toTopOf="@-t-id/lista" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf= "parent" app:layout_constraintTop_toTo pOf= "parent" app:layout_constraintVertical_bias=“0.457" /> <Button android:id = "@+id/btlncluir" android:layout_width = "wrap_content" android:layout_height="wrap_content" android:layout_marginStart=''8dp" android;layout_marginLeft=''8dp" android;layout_marginTop="20dp" android:layout_marginEnd = "8dp'' android:layout_marginRight="8dp” android:onClick="incluirDisciplina" android:text="lnserir Disiplina" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias = "0.078" app:layout_constraintStart_toSta rtOf= "parent" app:layout_constraintTop_toBottomOf="@+id/lista" /> </androidx.constraintlayout. widget. ConstraintLayout> Codigo da actv!ty_tratar_disciplina.xml <?xml version = "1.0" encoding = "utf-8"?> <a nd roidx. constraintlayout, widget. ConstraintLayout xm Ins :android = "http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xm Ins :tools=" http://schemas.android.com/too Is" android:layout_width = "match_parent" android:layout_height="match_parent" tools:context=".TratarDisciplina"> <Button android: id = "@+id/button" android:layout_width = "wrap_content" android:layout_height="wrap_content" android:layout_marginStart="49dp" android:layout_marginLeft="49dp" android:layout_marginTop="552dp" android:layout_marginEnd = "274dp" android:layout_marginRight="274dp" android:layout_marginBottom = "131dp" and ro id :onClick= "altera rinseri r" android:text="Alterar" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf= "parent" app:layout_constraintStart_toSta rtOf= "parent" app:layout_constraintTop_toTopOf="parent" /> <EditText android:id = "@+id/editText4" android:layout_width = "91dp" android:layout_height="41dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" android:layout_marginEnd = ''8dp'' android:layout_marginRight="8dp" and ro id :layout_margin Bottom = "8dp" android:ems="10" android:inputType="numberDecimar' app:layout_constraintBottom_toBottomOf=''parent" app:layout_constraintEnd_toEndOf=''parent" app:layout_constraintHorizontal_bias = "0.093" app:layout_constraintStart_toEndOf="@id/textView7'‘ app:layout_constraintTop_toBottomOf="@id/editText3" app:layout_constraintVertical_bias = "0.103" /> <EditText android:id = ''@+id/editText3" android:layout_width = "91dp" android:layout_height="41dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android;layout_marginTop="8dp" android;layout_marginEnd = "8dp" android:layout_marginRight="8dp" and ro id :layout_margin Bottom = "8dp" android:ems=''10" android:inputType="numberDecimar‘ app:layout_constraintBottom_toBottomOf='‘parent" app:layout_constraintEnd_toEndOf="parent" app;layout_constraintHorizontal_bias = "0.093" app:layout_constraintStart_toEndOf="@-i-id/textView6'' app:layout_constraintTop_toBottomOf="@+id/editText2" app;layout_constraintVertical_bias = "0.069" /> <TextView android:id = "@+id/textView7" android:layout_width = "52dp" android:layout_height="42dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" a n d ro id: text = "A3:" app:layout_constraintBottom_toBottomOf= "parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.088" app;layout_constraintStart_toStartOf= "parent" app:layout_constraintTop_toBottomOf="@+id/textView6" app:layout_constraintVertical_bias = "0.096" /> <TextView android:id = "@+id/textView6" android:layout_width = "52dp" android:layout_height="42dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="8dp" and ro id :text= ''A2: “ app:layout_constraintBottom_toBottomOf=''parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias = "0.088" app:layout_constraintStart_toStartOf=" parent" app:layout_constraintTop_toBottomOf="@id/textView5" app:layout_constraintVertical_bias="0.064“ /> <TextView and ro id: id = '‘@+id/textView3" android:layout_width = "wrap_content'' android:layout_height=“wrap_content'' android:layout_marginStart="28dp" android:layout_marginLeft="28dp'' android:layout_marginTop="127dp'' android:layout_marginEnd = "258dp" android:layout_marginRight="258dp'' and ro id :layout_margin Bottom = "585dp" android:text="Nome da Disciplina:" app:layout_constraintBottom_toBottomOf=''parent"app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf= "parent" /> <EditText android:id = ”@+id/editText" android:layout_width = "356dp" android:layout_height="48dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginTop="172dp" android:layout_marginEnd = "8dp" android:layout_marginRight="8dp" android:layout_marginBottom = "511dp" android:ems="10" android: in putType="textPe rsonName" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf= "parent" app;layout_constraintTop_toTopOf="parent" /> <TextView android:id = "@+id/textView4" android:layout_width = "89dp" android;layout_height="31dp" android:layout_marginTop="20dp” and ro id :text=" N otas:" app:layout_constraintTop_toBottomOf="@+id/editText" tools:layout_editor_absoluteX="30dp" tools:ignore = "MissingConstraints" /> <TextView android: id = "@-i-id/textView5" android:layout_width = ''52dp" android:layout_height="42dp'' android:layout_marginStart=''8dp'' android:layout_marginLeft=''8dp'' android:layout_marginTop=''8dp" and ro id :text= "Al: “ app;layout_constraintBottom_toBottomOf= "parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias = "0.088" app:layout_constraintStart_toStartOf= "parent" app:layout_constraintTop_toBottomOf="@+id/textView4'' app:layout_constraintVertical_bias="0.057" /> <EditText android: id = "@+id/editText2" android:layout_width = "91dp" android:layout_height="41dp" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginEnd = "8dp" android:layout_marginRight="8dp" and ro id :layout_margin Bottom = "8dp" android:ems="10" android:inputType="numberDecimar' app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias = "0.093" app:layout_constraintStart_toEndOf="@-i-id/textView5" app:layout_constraintTop_toBottomOf="@+id/textView4" app:layout_constraintVertical_bias="0.081“ /> < Button android:id = "@+id/button2" android:layout_width = "wrap_content" android:layout_height="wrap_content" android:layout_marginStart="284dp" android:layout_marginLeft="284dp" android:layout_marginTop="552dp'' android:layout_marginEnd = "39dp" android:layout_marginRight="39dp" android: layout_margin Bottom = "13 Idp" android:onClick="excluir" android:text="Excluir" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toSta rtOf= "parent" app:layout_constraintTop_toTopOf="parent" /> <Button android: id = ''@+id/button3'‘ android:layout_width = ''wrap_content'' android:layout_height=''wrap_content'' android:layout_marginStart='’153dp" android:layout_marginLeft="153dp" android:layout_marginTop="593dp" android:layout_marginEnd = ''170dp'' android;layout_marginRight=''170dp'' and ro id ;layout_margin Bottom = ''90dp'' android:onClick=''vo Itar" and ro id :text= "Vo Ita r" app:layout_constraintBottom_toBottomOf=" parent" app:layout_constraintEnd_toEndOf=''parent'' app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </and roidx.constrai ntlayo ut. widget. ConstraintLayout> Codigo do objeto Discipiina package com.example.discipiina; public class Discipiina { // Definigao dos atributos // O atributo id nao existia na versao anterior private long id; private String nome; private double al, a2, a3; // Metodos novos, de acesso do atributo id public long getld() { return id; } public void setld(long id) { this.id = id; } // Metodos de acesso (setters & getters) public String getNomeO { return nome; } public void setNome(String nome) { if (Inome.isEmptyO) { this.nome = nome; } public double getAlO { return al; } public void setAl(double al) { if (al >= 0) { this.al = al; } } public double getA2() { return a2; } public void setA2(double a2) { if (a2 >= 0) { this.a2 = a2; } } public double getA3() { return a3; } public void setA3(double a3) { if (a3 >= 0) { this.aS = a3; } } // Metodo construtor com defini^ao dos valores-padrao public DisciplinaO { nome = “Nome Disciplina"; al = 0.0; a2 = 0.0; a3 = 0.0; // Metodo de formata^ao dos dados para exibi^ao na lista public String textoListaO { String item; item = getNomeO; item += '‘\nAl: " + String.format(''%3.If", getAlO); item += '‘\tA2: " + String.format("%3.If", getA2()); item += "\tA3: " + String.format(''%3.If", getA3()); return item; Codigo do disciplina_dao(onde as definigoes de acesso ao banco de dados ficam) package com.example.discipline; import java.util. ArrayList; import java.util. List; import android.content.ContentValues ; import android.content.Context; import android.database.Cursor; import android.database.SQLException ; import android.database.sqlite . SQLiteDatabase ; // Camada de dados (Persistencia) // Classe de defini^ao para os acessos ao banco de dados public class Disciplina_DAO { // Define um objeto banco de dados private SQLiteDatabase database; // Define as colunas da tabela private String [] columns = { DisciplinaSQLiteOpenHelper.COLUWAJD DisciplinaSQLiteOpenHelper.COLL//VA_/VOMf , DisciplinaSQLiteOpenHelper.COLL/WA_Al , DisciplinaSQLiteOpenHelper.COLC/W/5_A2 , DisciplinaSQLiteOpenHelper.COLt//\/A_A3 }; private DisciplinaSQLiteOpenHelper sqliteOpenHelper; // Metodo construtor public Disciplina_DAO(Context context) { sqliteOpenHelper = new DisciplinaSQLiteOpenHelper(context); } // Metodo para abrir o recurso de banco de dados public void open () throws SQLException ■( database = sqliteOpenHelper.getWritableDatabaseO; } // Metodo para fechar o recurso de banco de dados public void close() { sqliteOpenHelper.close (); } // Metodo de inclusao de registro public void inserir ( String nome, double al, double a2, double a3 ) { // Prepara os valores das colunas da tabela para a insergao Contentvalues values = new Contentvalues (); values.put ( DisciplinaSQLiteOpenHelper.COLUWA_WOMf , nome ); values.put ( DisciplinaS0LiteOpenHelper.COLUWA_Al , String. valueOf(al) ); values.put ( DisciplinaSQLiteOpenHelper.COLt/WA_A2 , String. valueOf(a2) ); values.put ( DisciplinaSQLiteOpenHelper.COLt/WA_A5 , String. valueOf(a3) ); // Efetua a inclusao com retorno do id do registro long insertid = database.insert ( DisciplinaSQLiteOpenHelper.TABELA , null , values ); } // Metodo para atualiza^ao de um registro da tabela // Recebe os dados para a insergao public void alterar(long id, String nome, double al, double a2, double a3){ import android.content.ContentValues ; import android.content.Context; import android.database.Cursor; import android.database.SQLException ; import android.database.sqlite . SQLiteDatabase ; // Camada de dados (Persistencia) // Classe de defini^ao para os acessos ao banco de dados public class Disciplina_DAO { // Define um objeto banco de dados private SQLiteDatabase database; // Define as colunas da tabela private String [] columns = { DisciplinaSQLiteOpenHelper.COLUWAJD DisciplinaSQLiteOpenHelper.COLL//VA_/VOMf , DisciplinaSQLiteOpenHelper.COLL/WA_Al , DisciplinaSQLiteOpenHelper.COLC/W/5_A2 , DisciplinaSQLiteOpenHelper.COLt//\/A_A3 }; private DisciplinaSQLiteOpenHelper sqliteOpenHelper; // Metodo construtor public Disciplina_DAO(Context context) { sqliteOpenHelper = new DisciplinaSQLiteOpenHelper(context); } // Metodo para abrir o recurso de banco de dados public void open () throws SQLException ■( database = sqliteOpenHelper.getWritableDatabaseO; } // Metodo para fechar o recurso de banco de dados public void close() { sqliteOpenHelper.close (); } // Metodo de inclusao de registro public void inserir ( String nome, double al, double a2, double a3 ) { // Prepara os valores das colunas da tabela para a insergao Contentvalues values = new Contentvalues (); values.put ( DisciplinaSQLiteOpenHelper.COLUWA_WOMf , nome ); values.put ( DisciplinaS0LiteOpenHelper.COLUWA_Al , String. valueOf(al) ); values.put ( DisciplinaSQLiteOpenHelper.COLt/WA_A2 , String. valueOf(a2) ); values.put ( DisciplinaSQLiteOpenHelper.COLt/WA_A5 , String.valueOf(a3) ); // Efetua a inclusao com retorno do id do registro long insertid = database.insert ( DisciplinaSQLiteOpenHelper.TABELA , null , values ); } // Metodo para atualiza^ao de um registro da tabela // Recebe os dados para a insergao public void alterar(long id, String nome, double al, double a2, double a3){ // Prepara os dados para a atualizat^ao Contentvalues values = new Contentvalues (); values.put ( DisciplinaSQLiteOpenHelper.COLt/W>4_A/OMf , nome ); values.put ( DisciplinaSQLiteOpenHelper.COLt/W>4_AI , String. valueOf(al) ); values.put ( DisciplinaSQLiteOpenHelper.COLt/W/4_yi2 , String. valueOf(a2) ); values.put ( DisciplinaSQLiteOpenHelper.CO/.t/W^_^3 , String. valueOf(a3) ); // Efetua a altera^ao do registro, de acordo com o id do registro database.update(DisciplinaSQLiteOpenHelper.77)SEL4 , values, DisciplinaSQLiteOpenHelper.COLUW>4_/D + " = " + id, null); } // Metodo para a exclusao de um registro // Recede o id do registro que sera excluido public void apagar ( long id ) ■( // Exclui 0 registro a partir do id database.delete ( DisciplinaSQLiteOpenHelper.TT^SEM , DisciplinaSQLiteOpen Helper. COLUNAJD + " = " + id , null ); } // Metodo de busca de registro a partir do id // Busca os dados de cada registro a partir do id // Retorna um objeto Disciplina com os dados do registro public Disciplina buscar ( long id ) { // Realize a busca a partir do id do registro // Usado para buscar os dados para a montagem da tela e // para a altera^ao ou exclusao do registro // O objeto cursor armazena os registros da consulta // Como 0 filtro e o id, apenas um registro sera selecionado Cursor cursor = database.query( DisciplinaSQLiteOpenHelper.TABELA, columns , DisciplinaSQLiteOpenHelper.COLt/W,4_/D + " = " + id, null , null , null , null ); cursor. moveToFirst (); // Cria um objeto Disciplina auxiliar para retornar o objeto Disciplina disciplina = new Disciplina (); // Preenche os dados do registro do banco // nas propriedades do objeto auxiliar disciplina.setid ( cursor.getLong (0) ); disciplina.setNome ( cursor.getString (1) ); disciplina.setAl ( cursor.getDouble (2) ); disciplina.setA2 ( cursor.getDouble (3) ); disciplina.setA3 ( cursor.getDouble (4) ); // Fecha o recurso do cursor cursor.closeO: // Retorna o objeto auxiliar do tipo Disciplina return disciplina ; } // Metodo de montagem da lista de registros das disciplines // Monta a lista de disciplines pere e cerga de liste ne tele principal // O metodo retornara uma lista com todas as disciplinas armazenadas // no banco public List <Disciplina > getAII () { // Prepara um Arraylist para retorno dos registros armazenados no banco List <Disciplina > disciplinas = new ArrayList <Disciplina>(); // Objeto cursor para armazenar temporariamente os dados // retornados pela consulta Cursor cursor = database . query ( DisciplinaSQLiteOpenHelper. TABELA , columns , null , null , null , null , null ); // Passa 0 ponteiro para o primeiro registro do cursor cursor. moveToFirst (); // Para cada registro, os dados da tabela sao copiados para // 0 objeto Disciplina da lista while (Icursor.isAfterLast ()) { Disciplina disciplina = new Disciplina (); disciplina.setid ( cursor. getLong (0) ); disciplina.setNome ( cursor. getString (1) ); disciplina.setAl ( cursor.getDouble (2) ); disciplina.setA2 ( cursor.getDouble (3) ); disciplina.setA3 ( cursor.getDouble (4) ); disciplinas.add ( disciplina ); cursor. moveToNext (); } // Fecha o cursor cursor. close (); // Retorna a lista de disciplinas return disciplinas; } Codigo do SQLiteOpenHeiper (para definigao da tabela e atributos) package com.example.disciplina; import android.content.Context; import android.data base.sq lite. SQLite Database; import android.data base.sq lite. SQLiteOpen Hei per; public class DisciplinaSQLiteOpenHelper extends SQLiteOpenHelper { // Defini^ao da tabela e dos atributos // Os espa^os antes e depois dos nomes sao importantes, // pois sera criada uma QUERY (consulta) com esses identificadores public static final String TABELA = "Disciplina public static final String COLUNAJD = "id" ; public static final String COLUNA_NOME = “nome"; public static final String COLUNA_A1 = "al"; public static final String COLUNA_A2 = "a2": public static final String COLUNA_A3 = "a3": // Define o nome do banco de dados private static final String DATABASE_NAME = "disciplinas.db"; // Define a versao do banco // O valor deve ser incrementado somente em casos de altera?6es // na estrutura do banco (tabelas e atributos) private static final int DATABASE_VERSION = 1; // String de criapao da tabela no banco de dados private static final String CRIAR_BANCO = "create table " + TABELA + "(" + COLUNAJD + " integer primary key autoincrement, " + COLUNA_NOME + " text not null , " + COLUNA_A1 + " double not null , " + COLUNA_A2 + " double not null . " + COLUNA_A3 + " double not null ) // Metodo construtor da classe para criapao ou atualiza^ao do banco public DisciplinaSQLiteOpenHelper(Context context) { super(context. DATABASE_NAME, null, DATABASEJ/ERSION); } // Cria 0 banco de dados, caso nao exista ©Override public void onCreate ( SQLiteDatabase database ) { database . execSQL ( CRIAR_BANCO ); } // Atualiza o banco de dados, caso seja uma nova versao ©Override public void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion) { db. execSQL ("DROP TABLE IF EXISTS " + TABELA ); onCreate (db); } Codigo do Controller da MalnActIvlty package com.example.disciplina; import androidx.appcompatapp.AppCompatActivity; import android.os.Bundle; import android.content.lntent; import android.view .View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import java.util. Iterator; import java.util. List; public class MainActivity extends AppCompatActivity implements AdapterView.OnltemClickListener{ // Componente lista da view Listview lista; // Declaragao da intent Intent intent; // Determine o codigo da intent public static final int ACTIVITY_REQUEST_DISCIPLINA = 1; // Declare o objeto de persistencie (ecesso eo benco) private Disciplina_DAO dao ; // Vetor com os dados das disciplines pera epresenter ne liste privete String[] disciplines; //Vetorcom o id dos registros para identificar o registro // para os casos de selegao na lista para alteragao ou // exclusao private longj] idDisiciplinas; ©Override protected void onCreate(Bundle savedInstanceState) { SU per.onCreate(saved Instancestate); setConte ntView(R.layout.activity_main): lista = (Listview) findViewByld(R.id.lista); // Altera o titulo da janela da atividade setTitleC'Banco de Dados com SQLite!"); // Cria 0 objeto de acesso ao banco dao = new Disciplina_DAO(this); // Abre o banco dao.openO; // Determine que os itens de liste sereo cliceveis e // prepere o metodo de controle: onltemClick(..) lista.setOnltemClickListener(this); // Clique no item } // Sempre que a atividade passer pelo metodo onResume, e liste // sere etuelizede ©Override protected void onResume () { dao.open (); super.onResume (); // Prepare e liste que sere exibide eo usuerio ne tele // Busca no banco todos os registros List<Disciplina > listaDisciplinas = dao.getAIIO; // Define o tamanho dos vetores de disciplines e id // em funpao do tamanho (quantidade de registros) da tabela disciplinas = new String[listaDisciplinas.size()]; idDisiciplinas = new long[listaDisciplinas.size()]; // Primeiro fndice dos vetores int i =0; // Cria um objeto iterator para preencher o vetorde disciplinas // com os dados dos registros lterator<Disciplina> iterator = listaDisciplinas.iteratorO; // Para cada registro preencher os vetores while (iterator.hasNextO) ■( // Objeto discipline euxilier Discipline aux = new DisciplinaO; // Recebe no objeto euxilier os dedos de cede registro aux = (Discipline) iterator.nextO; // Preenche o vetor de disciplines pere visualizapao ne liste disciplinasfi] = aux.textoListaO; // Preenche o vetor de id pere identificepeo do registro // eo se escolher um elemento de liste pere // a alterapao ou exclusao idDisiciplinas[i] = aux.getld(); //Proximo item dos vetores i++: } // Carrega o ArrayAdapter com os dados do vetor de disciplinas ArrayAdapter <String > adapter = new ArrayAdapter<String >( this , android.R.layout.simple_list_item_l , disciplinas ); // Preenche a lista com os dados do ArrayAdapter lista.setAdapter( adapter); } // Pecha 0 recurso de acesso ao banco sempre que a atividade passer // por ume peuse ©Override protected void onPeuse () { // Libere o recurso de ecesso ao banco dao.closeO; super.onPause (); } // Metodo para selepao de um item da lista para // alterapao ou exclusao (atende a interface: AdapterView.OnItemClickListener) public void onltemClick(AdapterView<?> parent, View view, int position, long ident) { // Position e a posipao do item na lista // Armazena o indice do elemento escolhido na lista long id = idDisiciplinas[position]; // Preparapao da intent com previsao de retorno de dados intent = new lntent(getApplicationContext(), TratarDisciplina. class); // Passa os dados do item escolhido para a atividade de tratamento intent.putExtraC'acao", 0); intent.putExtraC'id", id); // Chama a atividade startActivity( intent): } // Metodo de controle para chamada da atividade secundaria para inclusao public void incluirDisciplina(View v){ // Intent para chamar a atividade secundaria intent = new lntent(getApplicationContext(), TratarDisciplina. class); // Passa os dados do item escolhido para a atividade de tratamento intent.putExtraC'acao", -1); intent.putExtraC'id", OL); // Chama a atividade startActivity( intent); } // Metodo para encerrar o aplicativo public void sair(View v){ finishO; Codigo do Controller TratarDisciplina package com.example.disciplina; import androidx.appcompatapp.AppCompatActivity; import android.os.Bundle; import android.view .View; import android.widget.Button: import android.widget.EditText; public class TratarDisciplina extends AppCompatActivity { // Declara^ao dos componentes de tela EditText edl, ed2, ed3, ed4: Button btl, bt2; // Atributos de informa^des de acao: 0 : altera^ao ou exclusao // -1 : inclusao private int acao; // Id do registro para altera^ao ou exclusao // sera usado com o metodo buscar para trazeros dados do registro private long id; ©Override protected void onCreate(Bundle savedInstanceState) { SU per.onCreate(saved Instancestate): setConte ntView(R. layout, activity_tratar_disciplina); btl = (Button) findViewByld(R.id.button): bt2 = (Button) findViewByld(R.id.button?); edl = (EditText) findViewByld(R.id.editText); ed2 = (EditText) findViewByld(R.id.editText2); ed3 = (EditText) findViewByld(R.id.editTextS); ed4 = (EditText) findViewByld(R.id.ec/(tText4); // Recebe os dados da atividade principal // e preenche a tela (view) acao = getlntent().getExtras().getlnt('‘acao'‘); id = getlntent().getExtras().getLong(''id'‘): //Altera o titulo e prepara a tela if (acao == -1) { //Tela de inclusao // Usa dados-padrao setTitleC'Inserir Disciplina"); btl.setTextC'Incluir"): bt2.setEnabled (false): edl.setTextCNome Disciplina"); ed2.setText(String.format("%.lf", 0.0)); ed3.setText(String.format("%.lf", 0.0)); ed4.setText(String.format("%.lf", 0.0)); } else { //Tela de altera^ao ou exclusao setTitleC'Alterar ou Excluir Disciplina"); // Cria um objeto Disciplina auxiliar para armazenar // os dados do registro Disciplina aux = new DisciplinaO; // Cria 0 objeto de acesso ao banco Disciplina_DAO dao = new Disciplina_DAO(this); // Abre o banco dao.openO; // Faz a consulta pelo id do registro para // buscar os dados na tabela aux = dao.buscar(id); // Preenche os dados do registro na tela edl.setText(aux.getNome()); ed2.setText(String.format{"%.If", aux.getAlO)); ed3.setText(String.format("%.If", aux.getA2())): ed4.setText(String.format("%.If", aux.getA3())); // Libera o recurso de acesso ao banco de dados dao.closeO; } // Metodo para preparar os dados para retornar a atividade principal public void alterarlnserir(View v) { String nome; double al, a2, a3; // Pega os dados preenchidos na tela, // para inclusao ou alterapao nome = edl.getText().toString(); al = Double.parseDoub/e(ed2.getText().toString()); a2 = Double.parseDoL/t>/e(ed3.getText().toString()); a3 = Double.parseDout>/e(ed4.getText().toString()); // Cria 0 objeto de acesso ao banco Disciplina_DAO dao = new Disciplina_DAO(this); // Abre o banco dao.openO; // Determine a apao if (acao == -1) { // Apao de inserpao // Realize e incluseo de discipline ne tebele deo.inserir(nome, el, a2, a3): } else{ //Apeo de altera^ao // Reelize e altera^ao do registro correspondente ne tebele deo.elterar(id, nome, al, a2, a3): } // Libera o recurso de acesso ao banco dao.closeO; // Encerra a atividade, retornando a atividade principal finishO; } 1/ Metodo para a exclusao de um registro de acordo com o id da discipline public void excluir(View v) { // Confere se e ume e^eo de elterepeo ou excluseo if (eceo == 0) { // Crie 0 objeto de ecesso eo benco Disciplina_DAO dao = new Disciplina_DAO(this): // Abre o banco dao.openO; // Realiza a exclusao do registro por meio do id dao.apagar(id); // Libera o recurso de acesso ao banco dao.closeO; } // Encerra a atividade, retornando a atividade principal finishO: } public void voltar(View v) { // Encerra a atividade, retornando a atividade principal finishO;
Compartilhar