Saudações pessoal,
Hoje vou mostrar o código completo de suporte ao post Persistencia de Dados Android - ROOM
Fiz um código auto-explicativo por ser complemento do post passado.
Como é possível ver na imagem não foram feitas alterações no manifeste.
No Gradle (Module) foi adicionado as linhas
Estrutura de pastas: Dentro de model temos 3 classe Person, AppDatabase e PersonDao
Person é a nossa entidade
PersonDao é a interfaces que vai permitir usar os métodos relacionados a person.
AppDatabase é a classe abstrata que nos permite a conexão directa com o SQLite.
Na pasta "ui" temos apenas a MainActivity onde faremos uma boa parte do trabalho.
Vamos ao código
Person.java
PersonDao.java
AppDatabase.java
MainActivity.java
activity_main.xml
Espero ter ajudado com este post.
Se foi util para ti deixa um (y) comentario ou faça algum outro gesto para que eu saiba.
Bons estudos.
Link IQ Option
Hoje vou mostrar o código completo de suporte ao post Persistencia de Dados Android - ROOM
Fiz um código auto-explicativo por ser complemento do post passado.
Como é possível ver na imagem não foram feitas alterações no manifeste.
No Gradle (Module) foi adicionado as linhas
// Roomimplementation "android.arch.persistence.room:runtime:1.0.0"annotationProcessor "android.arch.persistence.room:compiler:1.0.0"
Estrutura de pastas: Dentro de model temos 3 classe Person, AppDatabase e PersonDao
Person é a nossa entidade
PersonDao é a interfaces que vai permitir usar os métodos relacionados a person.
AppDatabase é a classe abstrata que nos permite a conexão directa com o SQLite.
Na pasta "ui" temos apenas a MainActivity onde faremos uma boa parte do trabalho.
Vamos ao código
Person.java
@Entity(tableName = "person") public class Person { @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") private int id; @ColumnInfo(name = "name") private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { // Usei a ajuda do toString para mostrar os dados porque o foco não era adapter return getId()+" - "+getName(); } }
PersonDao.java
@Daopublic interface PersonDao { @Query("SELECT * FROM person") List<Person> loadAll(); // metodo nao usado mas coloquei para ilucidar como pode ser criado @Query("SELECT * FROM person WHERE id IN (:ids)") List<Person> loadAllByPersonId(int... ids); // metodo nao usado mas coloquei para ilucidar como pode ser criado @Query("SELECT * FROM person where name LIKE :name LIMIT 1") Person loadPersonByName(String name); // metodo nao usado mas coloquei para ilucidar como pode ser criado @Insert void insertAll(Person... person); @Insert void insert(Person person); @Update void update(Person person); @Delete void delete(Person person); }
AppDatabase.java
@Database(entities = {Person.class},version = 1, exportSchema = false) public abstract class AppDatabase extends RoomDatabase { public abstract PersonDao personDao();}
MainActivity.java
package ao.co.a2xevolution.persistenciaandroidroom.ui; import android.arch.persistence.room.Room;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ListView; import java.util.List; import ao.co.a2xevolution.persistenciaandroidroom.R;import ao.co.a2xevolution.persistenciaandroidroom.model.AppDatabase;import ao.co.a2xevolution.persistenciaandroidroom.model.Person; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText txtName; private Button btnSave; private ListView lstPerson; private AppDatabase db; private List<Person> people; private ArrayAdapter<Person> adapter; private Person person; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); person = new Person(); txtName = (EditText) findViewById(R.id.txtName); btnSave = (Button) findViewById(R.id.btnSave); btnSave.setOnClickListener(this); lstPerson = (ListView) findViewById(R.id.lstPerson); lstPerson.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { delete(position); listAll(); return true; } }); lstPerson.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { person = people.get(position); txtName.setText(person.getName()); } }); // Usei a ajuda do toString para mostrar os dados porque o foco não era adapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1); lstPerson.setAdapter(adapter); db = Room .databaseBuilder(getApplicationContext(), AppDatabase.class, "Exemplo-cda") .allowMainThreadQueries() // não usar esta linha na UI Principal .build(); listAll(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnSave: if (person.getId() < 1) { person.setName(txtName.getText().toString()); insert(); listAll(); txtName.setText(""); } else { person.setName(txtName.getText().toString()); update(); listAll(); txtName.setText(""); } break; } } private void insert(){ db.personDao().insert(person); person = new Person(); } private void update() { db.personDao().update(person); person = new Person(); } private void delete(int position) { db.personDao().delete(people.get(position)); } private void listAll() { people = db.personDao().loadAll(); adapter.clear(); adapter.addAll(people); } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="ao.co.a2xevolution.persistenciaandroidroom.ui.MainActivity"> <EditText android:id="@+id/txtName" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:ems="10" android:inputType="textPersonName" android:hint="Name" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/btnSave" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:text="Save" app:layout_constraintBottom_toTopOf="@+id/lstPerson" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/txtName" /> <ListView android:id="@+id/lstPerson" android:layout_width="368dp" android:layout_height="385dp" android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /></android.support.constraint.ConstraintLayout>
Espero ter ajudado com este post.
Se foi util para ti deixa um (y) comentario ou faça algum outro gesto para que eu saiba.
Bons estudos.
Link IQ Option
Nenhum comentário:
Postar um comentário