19:46 16/06/2018
Início do curso de Android com o Jamilton Damasceno
https://www.udemy.com/curso-de-desenvolvimento-android-oreo

Base, instalar:
JDK
JRE
Android Studio (IDE) => versões novas já vem com o Open JDK
– https://developer.android.com/studio/

Opções para testar as apps:
– Android Virtual Device (AVD)
– próprio telefone (habilitando o modo programador)
– Genymotion (programa para rodar versões do Android no PC)

—————————————————————————
Passar dados entre Activities
—————————————————————————
# Classe se origem
// Criação de uma Intent
Intent intent = new Intent(getApplicationContext(), SegundaActivity.class);

// Instanciar o objeto Usuario
Usuario usuario = new Usuario(“Dante”, “dante@email.com”);

// Passar dados
intent.putExtra(“nome”, “Dante Marinho”);
intent.putExtra(“idade”, 34);

// Passagem de objeto
intent.putExtra(“objeto”, usuario);

startActivity(intent);

# Classe de destino
textNome = findViewById(R.id.textNome);
textIdade = findViewById(R.id.textIdade);

// Recuperar os dados enviados
Bundle dados = getIntent().getExtras();
String nome = dados.getString(“nome”);
int idade = dados.getInt(“idade”);

// Recuperar um obj
Usuario usuario = (Usuario) dados.getSerializable(“objeto”);

// Configurar valores recuperados
textNome.setText(usuario.getEmail());
textIdade.setText(String.valueOf(idade));

—————————————————————————
SharedPreferences
—————————————————————————

private SharedPreferences preferences;
private final String ARQUIVO = “preferencias”;

// ler dados das preferencias
preferences = getSharedPreferences(ARQUIVO, MODE_PRIVATE);
int numListagem = preferences.getInt(“num-listagem”, 3); // se nao tiver valor, devolve o valor padrao “3”
String tipoDados = preferences.getString(“tipo-dados”, “direto”); // se nao tiver valor, devolve o valor padrao “direto”

// inserir dados nas preferencias
SharedPreferences.Editor editor = preferences.edit();
editor.putInt(“num-listagem”, novoNumListagem);
editor.putString(“tipo-dados”, novoTipoDados);
editor.commit();

—————————————————————————
Intent » putExtra(), getExtras()
—————————————————————————

# janela de origem
– criar uma intent
– passar o valor por inputExtra

Ex (passar um número random para outra activity):
Intent intent = new Intent(getApplicationContext(), ResultadoActivity.class);
int numero = new Random().nextInt(2);
intent.putExtra(“numero”, numero);
startActivity(intent);

# janela de destino (recuperar os dados)
Bundle dados = getIntent().getExtras();
int numero = dados.getInt(“numero”); // “numeo” é uma key que está no array dados

# passagem de objeto
para passar um objeto, precisa implementar a classe Serializable na classe em que vai passar o objeto
na origem passa o objeto normalmente como passa um atributo
no destino, fazer o cast para o nome da classe do objeto

Exemplo:
Class Usuario
public class Usuario implements Serializable{ … }

MainActivity
// Criação de uma Intent
Intent intent = new Intent(getApplicationContext(), SegundaActivity.class);

// Instanciar o objeto Usuario
Usuario usuario = new Usuario(“Dante”, “dante@email.com”);

// Passar dados
intent.putExtra(“nome”, “Dante Marinho”);
intent.putExtra(“idade”, 34);

// Passagem de objeto
intent.putExtra(“objeto”, usuario);

startActivity(intent);

SegundaActivity
textNome = findViewById(R.id.textNome);
textIdade = findViewById(R.id.textIdade);

// Recuperar os dados enviados
Bundle dados = getIntent().getExtras();
String nome = dados.getString(“nome”);
int idade = dados.getInt(“idade”);

// Recuperar um obj
Usuario usuario = (Usuario) dados.getSerializable(“objeto”);

// Configurar valores recuperados
textNome.setText(usuario.getEmail());
textIdade.setText(String.valueOf(idade));

—————————————————————————
Banco de Dados SQLite
—————————————————————————
try {

// criar banco de dados
SQLiteDatabase bancoDados = openOrCreateDatabase(“app”, MODE_PRIVATE, null); // (3º param = factory)

// criar tabela
bancoDados.execSQL(“CREATE TABLE IF NOT EXISTS pessoas ( nome VARCHAR, idade INT(3) ) “);

// inserir dados
bancoDados.execSQL(“INSERT INTO pessoas(nome, idade) VALUES (‘Jamilton’, 30)”);
bancoDados.execSQL(“INSERT INTO pessoas(nome, idade) VALUES (‘Maria’, 35)”);

// recuperar dados
Cursor cursor = bancoDados.rawQuery(“SELECT nome, idade FROM pessoas”, null);
//Cursor cursor = bancoDados.rawQuery(“SELECT nome, idade FROM pessoas WHERE nome = ‘Dante'”, null);

// indices da tabela (ou entao usar diretamente o indice da coluna no while abaixo)
int indiceNome = cursor.getColumnIndex(“nome”);
int indiceIdade = cursor.getColumnIndex(“idade”);

// voltar o cursor para o 1ª item da lista (pois quando ele é inicializado e realiza a rawQuery, ele para no último registo da tabela)
cursor.moveToFirst();
while (cursor != null){
Log.i(“Resultado – nome: “, cursor.getString(indiceNome));
Log.i(“Resultado – idade: “, cursor.getString(indiceIdade));
cursor.moveToNext();
}

}catch (Exception e){
e.printStackTrace();
}