5
UNIVERSIDADE PRESIDENTE ANTÔNIO CARLOS FACULDADE DE EDUCAÇÃO E ESTUDOS SOCIAIS DE TEÓFILO OTONI Curso: Ciência da Computação - Disciplina: Programação Android Prof. Cássio Sena – [email protected] – Data 28/11/12 Trabalho Laboratório – 20 Pontos 01 – Usando o SQLite Passo 1 - Crie um novo projeto Android. Use como nome para o projeto SQLite. O nome do pacote deve ser br.com.unipacto.android, e o nome da activity deve ser MainActivity.(obserção se no projeto você criar a MainActivity não precisara adicionar o main.xml abaixo.) Passo 2 - Na pasta res/layouts crie um arquivo chamado main.xml. Ele deve conter o seguinte conteúdo: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:id ="@android:id/list" android:layout_width ="match_parent" android:layout_height="wrap_content"/> <TextView android:id="@android:id/empty" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/no_notes"/> </LinearLayout> Passo 3 - O arquivo res/values/strings.xml deve ficar com o seguinte conteúdo: <resources> <string name="app_name">SQLite</string> <string name="title_activity_main">MainActivity</string> <string name="add">Adicionar</string> <string name="no_notes">Nenhuma anotação</string> <string name="write_a_note">Escreva uma anotação</string> <string name="save">Salvar</string> </resources> Passo 4 Crie um novo arquivo java chamado CustomSQLiteOpenHelper com o seguinte conteúdo: package br.com.unipacto.android; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class CustomSQLiteOpenHelper extends SQLiteOpenHelper{ public static final String TABLE_NOTES="notes"; public static final String COLUMN_ID="_id"; public static final String COLUMN_NOTES="note"; private static final String DATABASE_NAME="notes.db"; private static final int DATABASE_VERSION=1; // Database creation sql statement private static final String DATABASE_CREATE="create table" + TABLE_NOTES + "(" + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_NOTES + " text not null);"; public CustomSQLiteOpenHelper(Context context){ super(context,DATABASE_NAME,null,DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase database) { database.execSQL(DATABASE_CREATE); }

Exercício Android/SQLite

Embed Size (px)

DESCRIPTION

Uma pequena aplicação que cadastra dados fornecidos pelo usuário.

Citation preview

Page 1: Exercício Android/SQLite

UNIVERSIDADE PRESIDENTE ANTÔNIO CARLOS FACULDADE DE EDUCAÇÃO E ESTUDOS SOCIAIS DE TEÓFILO OTONI Curso: Ciência da Computação - Disciplina: Programação Android Prof. Cássio Sena – [email protected] – Data 28/11/12

Trabalho Laboratório – 20 Pontos

01 – Usando o SQLite

Passo 1 - Crie um novo projeto Android. Use como nome para o projeto SQLite . O nome do pacote deve ser br.com.unipacto.android , e o nome da activity deve ser MainActivity .(obserção se no projeto você criar a MainActivity não precisara adicionar o main.xml abaixo.)

Passo 2 - Na pasta res/layouts crie um arquivo chamado main.xml . Ele deve conter o seguinte conteúdo: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android .com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:id ="@android:id/list" android:layout_width ="match_parent" android:layout_height="wrap_content"/> <TextView android:id="@android:id/empty" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/no_notes"/> </LinearLayout>

Passo 3 - O arquivo res/values/strings.xml deve ficar com o seguinte conteúdo: <resources> <string name="app_name">SQLite</string> <string name="title_activity_main">MainActivity</st ring> <string name="add">Adicionar</string> <string name="no_notes">Nenhuma anotação</string> <string name="write_a_note">Escreva uma anotação</s tring> <string name="save">Salvar</string> </resources>

Passo 4 Crie um novo arquivo java chamado CustomSQLiteOpenHelper com o seguinte conteúdo: package br.com.unipacto.android; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class CustomSQLiteOpenHelper extends SQLiteO penHelper{ public static final String TABLE_NOTES="notes"; public static final String COLUMN_ID="_id"; public static final String COLUMN_NOTES="note"; private static final String DATABASE_NAME="notes.db "; private static final int DATABASE_VERSION=1; // Database creation sql statement private static final String DATABASE_CREATE="create table" + TABLE_NOTES + "(" + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_N OTES + " text not null);"; public CustomSQLiteOpenHelper(Context context){ super(context,DATABASE_NAME,null,DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase database) { database.execSQL(DATABASE_CREATE); }

Page 2: Exercício Android/SQLite

UNIVERSIDADE PRESIDENTE ANTÔNIO CARLOS FACULDADE DE EDUCAÇÃO E ESTUDOS SOCIAIS DE TEÓFILO OTONI Curso: Ciência da Computação - Disciplina: Programação Android Prof. Cássio Sena – [email protected] – Data 28/11/12

@Override public void onUpgrade(SQLiteDatabase db,int oldVers ion,int newVersion) { db.execSQL("DROP TABLE IF EXISTS" + TABLE_NOTES); onCreate(db); } }

Passo 5 - Crie um arquivo java chamado Note , com o seguinte conteúdo: package br.com.unipacto.android; public class Note{ private long id; private String note; @Override public String toString() { return note; } public long getId(){ return id; } public void setId(long id){ this.id=id; } public String getNote(){ return note; } public void setNote(String note) { this.note=note; } }

Passo 6 - Crie um arquivo java chamado NotesDao , com o seguinte conteúdo: package br.com.unipacto.android; 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; public class NotesDao { private SQLiteDatabase database; private String [] columns={CustomSQLiteOpenHelper.C OLUMN_ID , CustomSQLiteOpenHelper.COLUMN_NOTES }; private CustomSQLiteOpenHelper sqliteOpenHelper; public NotesDao(Context context) { sqliteOpenHelper=new CustomSQLiteOpenHelper(context ); } public void open()throws SQLException{ database=sqliteOpenHelper.getWritableDatabase(); } public void close(){ sqliteOpenHelper.close(); } public Note create(String note) { ContentValues values=new ContentValues(); values.put(CustomSQLiteOpenHelper.COLUMN_NOTES , no te); long insertId = database.insert(CustomSQLiteOpenHel per.TABLE_NOTES, null, values );

Page 3: Exercício Android/SQLite

UNIVERSIDADE PRESIDENTE ANTÔNIO CARLOS FACULDADE DE EDUCAÇÃO E ESTUDOS SOCIAIS DE TEÓFILO OTONI Curso: Ciência da Computação - Disciplina: Programação Android Prof. Cássio Sena – [email protected] – Data 28/11/12

Cursor cursor=database.query(CustomSQLiteOpenHelper .TABLE_NOTES , columns , CustomSQLiteOpenHelper.COLUMN_ID + " = " + insertId , null , null , null , null ); cursor.moveToFirst(); Note newNote = new Note(); newNote.setId(cursor.getLong(0)); newNote.setNote(cursor.getString(1)); cursor.close(); return newNote ; } public void delete(Note note) { long id=note.getId(); database.delete(CustomSQLiteOpenHelper.TABLE_NOTES , CustomSQLiteOpenHelper.COLUMN_ID + " = " + id , null ); } public List <Note>getAll(){ List <Note> notes = new ArrayList <Note>(); Cursor cursor = database.query(CustomSQLiteOpenHelp er.TABLE_NOTES , columns , null , null , null , null , null ); cursor.moveToFirst(); while (!cursor.isAfterLast()) { Note note = new Note(); note.setId(cursor.getLong(0)); note.setNote(cursor.getString(1)); notes.add(note); cursor.moveToNext(); } cursor.close(); return notes; } }

Passo 7 - Edite o arquivo res/menu/main.xml (se o arquivo não existir, você deve criá-lo). Deixe-o com o seguinte conteúdo: <menu xmlns:android ="http://schemas.android.com/ap k/res/android"> <item android:id="@+id/add_note" android:title="@string/add" android:showAsAction="ifRoom"/> </menu>

Passo 8 - A seguir edite o arquivo MainActivity.java para que ele fique com o seguinte

conteúdo: package br.com.unipacto.android; import java.util.List; import android.app.ListActivity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.ArrayAdapter; public class MainActivity extends ListActivity { private NotesDao dao; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); dao = new NotesDao(this); dao.open(); } @Override protected void onResume(){

Page 4: Exercício Android/SQLite

UNIVERSIDADE PRESIDENTE ANTÔNIO CARLOS FACULDADE DE EDUCAÇÃO E ESTUDOS SOCIAIS DE TEÓFILO OTONI Curso: Ciência da Computação - Disciplina: Programação Android Prof. Cássio Sena – [email protected] – Data 28/11/12

dao.open(); super.onResume(); List <Note> notes = dao.getAll(); ArrayAdapter <Note > adapter = new ArrayAdapter <No te>(this, android.R.layout.simple_list_item_1,notes); setListAdapter(adapter); } @Override protected void onPause(){ dao.close(); super.onPause(); } @Override public boolean onCreateOptionsMenu(Menu menu){ getMenuInflater().inflate(R.menu.main,menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId()==R.id.add_note) { Intent intent=new Intent(this,AddNoteActivity.class ); startActivity(intent); } return super.onOptionsItemSelected(item); } }

Passo 9 – Crie um novo arquivo XML na pasta de layouts chamado add_note.xml com o conteúdo abaixo: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android .com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/note_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textMultiLine" android:hint="@string/write_a_note"/> <Button android:id="@+id/save_note_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/save"/> </LinearLayout>

Passo 10 – Crie uma nova classe chamada AddNoteActivity que herda Activity e possui o conteúdo abaixo: package br.com.unipacto.android; import android.app.Activity ; import android.os.Bundle ; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class AddNoteActivity extends Activity { private NotesDao dao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

Page 5: Exercício Android/SQLite

UNIVERSIDADE PRESIDENTE ANTÔNIO CARLOS FACULDADE DE EDUCAÇÃO E ESTUDOS SOCIAIS DE TEÓFILO OTONI Curso: Ciência da Computação - Disciplina: Programação Android Prof. Cássio Sena – [email protected] – Data 28/11/12

setContentView(R.layout.add_note); dao = new NotesDao(this); dao.open(); Button saveButton = (Button)findViewById(R.id.save_ note_button); final EditText noteText=(EditText)findViewById(R.id .note_text); saveButton.setOnClickListener(newOnClickListener(){ @Override public void onClick(View v) { String note = noteText.getEditableText().toString() ; dao.create(note); finish(); } }); } @Override protected void onResume(){ dao.open(); super.onResume(); } @Override protected void onPause(){ dao.close(); super.onPause(); } }

Passo 11 - Se lembre de adicionar os nomes das activities no AndroidManifest.xml . Após isso, rode a aplicação e veja o resultado. Feche a aplicação e abra novamente, para ver se o nome está salvo.