Buscar

Desenvolvimento de um aplicativo com a persistência de dados com o uso do SQLite no Android

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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;

Continue navegando