Upload
carlos-cavalcanti
View
378
Download
2
Embed Size (px)
DESCRIPTION
Aula 3 de android
Citation preview
AndroidDesenvolvimento
sábado, 27 de outubro de 12
Desenvolvedor de softwarewww.carloscavalcanti.com
twitter @carloscaval
github.com/carloscavalcanti
sábado, 27 de outubro de 12
Banco de dados
Google Maps
SMS
Review
sábado, 27 de outubro de 12
Banco de dados
Google Maps
SMS
Review
sábado, 27 de outubro de 12
Banco de dados
Google Maps
SMS
Review
sábado, 27 de outubro de 12
Banco de dados
Google Maps
SMS
Review
sábado, 27 de outubro de 12
Banco de dados
Google Maps
SMS
Review
sábado, 27 de outubro de 12
sábado, 27 de outubro de 12
Review
sábado, 27 de outubro de 12
ReviewActivity
sábado, 27 de outubro de 12
ReviewActivity
sábado, 27 de outubro de 12
ReviewActivity
sábado, 27 de outubro de 12
ReviewActivity
sábado, 27 de outubro de 12
Review
sábado, 27 de outubro de 12
Review
Ciclo de vida
sábado, 27 de outubro de 12
Review
sábado, 27 de outubro de 12
Review
AndroidManifest.xmlsábado, 27 de outubro de 12
Review
sábado, 27 de outubro de 12
Review
//Criando uma intent, onde iremos dizer para onde essa "intenção" irá.Intent it = new Intent(ClassActivityCorrente.this, OutraTelaActivity.class);
27//Funcão para dar inicio a intent.
28startActivity(it);
Intent
sábado, 27 de outubro de 12
Review
sábado, 27 de outubro de 12
Review<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.exemploandroid" android:versionCode="1" android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" />
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".NovaActivity"/> </application>
</manifest>sábado, 27 de outubro de 12
Review
sábado, 27 de outubro de 12
Review
Passar informações entre activitys
putExtra()
get?Extra()sábado, 27 de outubro de 12
Review
sábado, 27 de outubro de 12
Review
BroadcastReceiver
sábado, 27 de outubro de 12
Review
BroadcastReceiver
Notification
sábado, 27 de outubro de 12
Review
BroadcastReceiver
Notification
Service
sábado, 27 de outubro de 12
Review
sábado, 27 de outubro de 12
Review
AbsoluteLayout
sábado, 27 de outubro de 12
Review
AbsoluteLayout
FrameLayout
sábado, 27 de outubro de 12
Review
AbsoluteLayout
FrameLayout
TableLayout
sábado, 27 de outubro de 12
Review
AbsoluteLayout
FrameLayout
TableLayout
RelativeLayout
sábado, 27 de outubro de 12
Google Maps
sábado, 27 de outubro de 12
Primeiro passo
sábado, 27 de outubro de 12
Primeiro passo
sábado, 27 de outubro de 12
Primeiro passo
sábado, 27 de outubro de 12
Primeiro passo
sábado, 27 de outubro de 12
Se o projeto estiver criado?
sábado, 27 de outubro de 12
Se o projeto estiver criado?
sábado, 27 de outubro de 12
Se o projeto estiver criado?
sábado, 27 de outubro de 12
Utilizar a library
<uses-library android:name="com.google.android.maps"/>
Adicionar no manifest
Dentro da tag <application>
sábado, 27 de outubro de 12
Permissão no manifest
GPS e Internet
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.INTERNET"/>
sábado, 27 de outubro de 12
Chave de acesso
Para se trabalhar com o Google maps é necessário
obter uma chave
sábado, 27 de outubro de 12
Como obter?
Para obter a chave do Google Maps é
necessário estar com o certificado digital que se utiliza para assinar a
aplicação
sábado, 27 de outubro de 12
sábado, 27 de outubro de 12
Necessário obter o fingerprint
sábado, 27 de outubro de 12
Gerando chave
http://code.google.com/android/maps-api-signup.html
sábado, 27 de outubro de 12
Gerando chave
sábado, 27 de outubro de 12
Gerando chave
sábado, 27 de outubro de 12
public class MainActivity extends MapActivity {
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MapView mapView = new MapView(this, "key"); setContentView(mapView); }
@Override protected boolean isRouteDisplayed() { return false; }
}
MapActivity
sábado, 27 de outubro de 12
public class MainActivity extends MapActivity {
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MapView mapView = new MapView(this, "key"); setContentView(mapView); }
@Override protected boolean isRouteDisplayed() { return false; }
}
MapActivity
sábado, 27 de outubro de 12
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" >
<com.google.android.maps.MapView android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="key" />
</RelativeLayout>
sábado, 27 de outubro de 12
Métodos do MapView
Método DescriçãosetSatellite(boolean) Configura o mapa para visualização do tipo
satélite
setStreetView(boolean) Configura o mapa para exibir as ruas
setTraffic(boolean) Configura o mapa para aexibir as ruas e condições de tráfego
sábado, 27 de outubro de 12
Achando um ponto no mapa
GeoPoint geoPoint = new GeoPoint(latitudeE6, longitudeE6);
Necessário estar na notação de microdegress
sábado, 27 de outubro de 12
Microdegress
1E6 = 1.000.000
sábado, 27 de outubro de 12
//Grausdouble latitude = -25.442580;double longitude = -49.279840;//Converte para microdegress (graus * 1E6)int latitudeE6 = (int) (latitude * 1E6);int longitudeE6 = (int) (longitude * 1E6);
Exemplo
sábado, 27 de outubro de 12
GeoPoint
sábado, 27 de outubro de 12
Para definimos um ponto
sábado, 27 de outubro de 12
GeoPoint geoPoint = new GeoPoint(latitudeE6, longitudeE6);mapView.getController().setCenter(geoPoint);mapView.getController().setZoom(18);
Exemplo
sábado, 27 de outubro de 12
sábado, 27 de outubro de 12
setBuiltInZoomControls(boolean)
sábado, 27 de outubro de 12
setBuiltInZoomControls(boolean)
sábado, 27 de outubro de 12
mapView.setClickable(boolean);
Permitir (ou não) o usuário “passiar” pelo mapa
sábado, 27 de outubro de 12
Overlay
sábado, 27 de outubro de 12
Marcar posição
Necessário criar uma classe que extenda de Overlay
sábado, 27 de outubro de 12
CirculoOverleypublic class CirculoOverlay extends Overlay { private GeoPoint geoPoint; public CirculoOverlay(GeoPoint geoPoint) { this.geoPoint = geoPoint; } @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, shadow); if (geoPoint != null) { Point point = mapView.getProjection().toPixels(geoPoint, null); Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawCircle(point.x, point.y, 10, paint); } }
}
sábado, 27 de outubro de 12
CirculoOverleypublic class CirculoOverlay extends Overlay { private GeoPoint geoPoint; public CirculoOverlay(GeoPoint geoPoint) { this.geoPoint = geoPoint; } @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, shadow); if (geoPoint != null) { Point point = mapView.getProjection().toPixels(geoPoint, null); Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawCircle(point.x, point.y, 10, paint); } }
}
sábado, 27 de outubro de 12
CirculoOverleypublic class CirculoOverlay extends Overlay { private GeoPoint geoPoint; public CirculoOverlay(GeoPoint geoPoint) { this.geoPoint = geoPoint; } @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, shadow); if (geoPoint != null) { Point point = mapView.getProjection().toPixels(geoPoint, null); Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawCircle(point.x, point.y, 10, paint); } }
}
sábado, 27 de outubro de 12
CirculoOverleypublic class CirculoOverlay extends Overlay { private GeoPoint geoPoint; public CirculoOverlay(GeoPoint geoPoint) { this.geoPoint = geoPoint; } @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, shadow); if (geoPoint != null) { Point point = mapView.getProjection().toPixels(geoPoint, null); Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawCircle(point.x, point.y, 10, paint); } }
}
sábado, 27 de outubro de 12
CirculoOverleypublic class CirculoOverlay extends Overlay { private GeoPoint geoPoint; public CirculoOverlay(GeoPoint geoPoint) { this.geoPoint = geoPoint; } @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, shadow); if (geoPoint != null) { Point point = mapView.getProjection().toPixels(geoPoint, null); Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawCircle(point.x, point.y, 10, paint); } }
}
sábado, 27 de outubro de 12
CirculoOverleypublic class CirculoOverlay extends Overlay { private GeoPoint geoPoint; public CirculoOverlay(GeoPoint geoPoint) { this.geoPoint = geoPoint; } @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, shadow); if (geoPoint != null) { Point point = mapView.getProjection().toPixels(geoPoint, null); Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawCircle(point.x, point.y, 10, paint); } }
}
sábado, 27 de outubro de 12
Podemos adicionar vários pontos
mapView.getOverlays().add(new CirculoOverlay(geoPoint));
sábado, 27 de outubro de 12
sábado, 27 de outubro de 12
Exercício
• Criar estrutura para se trabalhar com o google maps
• Adicionar no layout 2 edits para informar a latitude e a longitude
• Criar um botão que atualize a tela diante a informação nos edits
sábado, 27 de outubro de 12
Capturando minha localização
sábado, 27 de outubro de 12
MyLocationOverlay
MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);myLocationOverlay.enableCompass(); //Ativar bussolamyLocationOverlay.enableMyLocation();mapView.getOverlays().add(myLocationOverlay);
sábado, 27 de outubro de 12
LocationListenerpublic class MainActivity extends MapActivity implements LocationListener {
@Override public void onLocationChanged(Location arg0) { // TODO Auto-generated method stub }
@Override public void onProviderDisabled(String arg0) { // TODO Auto-generated method stub }
@Override public void onProviderEnabled(String arg0) { // TODO Auto-generated method stub }
@Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
LocationProvider.AVAILABLE LocationProvider.OUT_OF_SERVICE LocationProvider.TEMPORARILY_UNAVAILABLE }}
sábado, 27 de outubro de 12
LocationManager locationManager = (LocationManager) getSystemService(locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);if (!gpsEnabled) { Intent settingsIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(settingsIntent);}
sábado, 27 de outubro de 12
Pesquisando um endereço
sábado, 27 de outubro de 12
Geocode
Geocoder geocoder = new Geocoder(this);try { List<Address> addresses = geocoder.getFromLocationName(“Endereço”, maxResults); int latitude = calcular1E6(addresses.get(0).getLatitude()); int longitude = calcular1E6(addresses.get(0).getLongitude()); GeoPoint geoPoint = new GeoPoint(latitude, longitude); mapView.getOverlays().add(new CirculoOverlay(geoPoint)); mapView.getController().setCenter(geoPoint); mapView.getController().setZoom(18);} catch (IOException e) { e.printStackTrace();}
sábado, 27 de outubro de 12
Exercicio
• Adicionar um edit na tela para se digitar o endereço
• Adicionar um button na tela para pesquisar
• Adicionar mapa na tela
sábado, 27 de outubro de 12
Exercicio
sábado, 27 de outubro de 12
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" >
<EditText android:id="@+id/edtEndereco" android:layout_width="fill_parent" android:layout_height="wrap_content" android:ems="10" />
<Button android:id="@+id/btnPesquisa" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Pesquisar" android:onClick="onPesquisar" android:layout_gravity="center_horizontal" /> </LinearLayout>
<com.google.android.maps.MapView android:id="@+id/map_view" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="06T63Ikl10JbvKGOw8lqtEi8bvdlHJgwokXP1sw" />
</LinearLayout>
sábado, 27 de outubro de 12
Traçar rota
sábado, 27 de outubro de 12
http://maps.google.com/maps?f=d&hl=en&saddr=25.04202,121.534761&daddr=25.05202,121.554761&ie=UTF8&0&om=0&output=kml
Pegar o KML
sábado, 27 de outubro de 12
SMS
sábado, 27 de outubro de 12
SMS
SmsManager smsManager = SmsManager.getDefault();smsManager.sendTextMessage("numero", null, "mensagem", null, null);
import android.telephony.SmsManager;
<uses-permission android:name="android.permission.SEND_SMS" />
sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)
Manifest
sábado, 27 de outubro de 12
SMS
SmsManager smsManager = SmsManager.getDefault();smsManager.sendTextMessage("numero", null, "mensagem", null, null);
import android.telephony.SmsManager;
<uses-permission android:name="android.permission.SEND_SMS" />
sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)
Manifest
sábado, 27 de outubro de 12
SMS
SmsManager smsManager = SmsManager.getDefault();smsManager.sendTextMessage("numero", null, "mensagem", null, null);
import android.telephony.SmsManager;
<uses-permission android:name="android.permission.SEND_SMS" />
sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)
Manifest
sábado, 27 de outubro de 12
sábado, 27 de outubro de 12
Banco de dados
sábado, 27 de outubro de 12
Banco de dados
SQLite
sábado, 27 de outubro de 12
Banco de dados
SQLite
ORMLite
http://ormlite.com/sábado, 27 de outubro de 12
sábado, 27 de outubro de 12
O que é ORMLite?
sábado, 27 de outubro de 12
O que é ORMLite?
Um framework ORM (Object Relational Mapping)
sábado, 27 de outubro de 12
sábado, 27 de outubro de 12
O que é necessário?
Baixar as libs:
http://ormlite.com/releases/4.42/ormlite-android-4.42.jar
http://ormlite.com/releases/4.42/ormlite-core-4.42.jar
sábado, 27 de outubro de 12
O que é necessário?
E coloca-las dentro da pasta libs no projeto
sábado, 27 de outubro de 12
O que é necessário?
sábado, 27 de outubro de 12
O que é necessário?Adicionar as libs ao projeto
sábado, 27 de outubro de 12
O que é necessário?
sábado, 27 de outubro de 12
O que é necessário?
sábado, 27 de outubro de 12
O que é necessário?
sábado, 27 de outubro de 12
O que é necessário?
sábado, 27 de outubro de 12
sábado, 27 de outubro de 12
Biblioteca do ORMLite adicionada
sábado, 27 de outubro de 12
sábado, 27 de outubro de 12
Vamos imaginar um pouco...
sábado, 27 de outubro de 12
Criar uma classe Cliente
sábado, 27 de outubro de 12
E fazer com que a classe represente uma tabela no banco
sábado, 27 de outubro de 12
public class Cliente { private String nome; private String endereco; private Date dataNascimento; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getEndereco() { return endereco; } public void setEndereco(String endereco) { this.endereco = endereco; } public Date getDataNascimento() { return dataNascimento; } public void setDataNascimento(Date dataNascimento) { this.dataNascimento = dataNascimento; }}
sábado, 27 de outubro de 12
Annotation
sábado, 27 de outubro de 12
Annotation
@DatabaseField
@DatabaseTable
sábado, 27 de outubro de 12
@DatabaseTable
@DatabaseTablepublic class Cliente {}
sábado, 27 de outubro de 12
@DatabaseField
@DatabaseField private String nome;
sábado, 27 de outubro de 12
Exemplo@DatabaseTablepublic class Cliente { @DatabaseField(id=true, generatedId=true) private Integer id; @DatabaseField private String nome; @DatabaseField private String endereco; @DatabaseField(columnName="data_nascimento") private Date dataNascimento;
sábado, 27 de outubro de 12
DAO
Data Access Object
sábado, 27 de outubro de 12
ClienteDao
public class ClienteDao extends BaseDaoImpl<Cliente, Integer> {
public ClienteDao(ConnectionSource connectionSource) throws SQLException { super(Cliente.class); setConnectionSource(connectionSource); initialize(); }}
sábado, 27 de outubro de 12
ClienteDao
public class ClienteDao extends BaseDaoImpl<Cliente, Integer> {
public ClienteDao(ConnectionSource connectionSource) throws SQLException { super(Cliente.class); setConnectionSource(connectionSource); initialize(); }}
sábado, 27 de outubro de 12
Estrutura base
sábado, 27 de outubro de 12
DatabaseHelper
No proprio site do ORMLite é disponibilizada uma classe para auxiliar na criação/atualização/remorção do banco
http://ormlite.com/android/examples/
sábado, 27 de outubro de 12
DataBaseHelperpublic class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "banco.db"; private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); }
@Override public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Cliente.class); //Aqui é definido as classes modelos que representam uma tabela no banco. } catch (SQLException e) { throw new RuntimeException(e); } }
sábado, 27 de outubro de 12
DataBaseHelperpublic class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "banco.db"; private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); }
@Override public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Cliente.class); //Aqui é definido as classes modelos que representam uma tabela no banco. } catch (SQLException e) { throw new RuntimeException(e); } }
sábado, 27 de outubro de 12
DataBaseHelperpublic class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "banco.db"; private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); }
@Override public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Cliente.class); //Aqui é definido as classes modelos que representam uma tabela no banco. } catch (SQLException e) { throw new RuntimeException(e); } }
sábado, 27 de outubro de 12
DataBaseHelperpublic class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "banco.db"; private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); }
@Override public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Cliente.class); //Aqui é definido as classes modelos que representam uma tabela no banco. } catch (SQLException e) { throw new RuntimeException(e); } }
sábado, 27 de outubro de 12
DataBaseHelperpublic class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "banco.db"; private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); }
@Override public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Cliente.class); //Aqui é definido as classes modelos que representam uma tabela no banco. } catch (SQLException e) { throw new RuntimeException(e); } }
sábado, 27 de outubro de 12
DataBaseHelperpublic class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "banco.db"; private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); }
@Override public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Cliente.class); //Aqui é definido as classes modelos que representam uma tabela no banco. } catch (SQLException e) { throw new RuntimeException(e); } }
sábado, 27 de outubro de 12
@Override public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int oldVersion, int newVersion) { try { Log.i(DatabaseHelper.class.getName(), "onUpgrade"); TableUtils.dropTable(connectionSource, Cliente.class, true); onCreate(db, connectionSource); } catch (SQLException e) { Log.e(DatabaseHelper.class.getName(), "Can't drop databases", e); throw new RuntimeException(e); } }
DataBaseHelper
sábado, 27 de outubro de 12
@Override public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int oldVersion, int newVersion) { try { Log.i(DatabaseHelper.class.getName(), "onUpgrade"); TableUtils.dropTable(connectionSource, Cliente.class, true); onCreate(db, connectionSource); } catch (SQLException e) { Log.e(DatabaseHelper.class.getName(), "Can't drop databases", e); throw new RuntimeException(e); } }
DataBaseHelper
sábado, 27 de outubro de 12
@Override public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int oldVersion, int newVersion) { try { Log.i(DatabaseHelper.class.getName(), "onUpgrade"); TableUtils.dropTable(connectionSource, Cliente.class, true); onCreate(db, connectionSource); } catch (SQLException e) { Log.e(DatabaseHelper.class.getName(), "Can't drop databases", e); throw new RuntimeException(e); } }
DataBaseHelper
sábado, 27 de outubro de 12
Instânciando um DAO
sábado, 27 de outubro de 12
Instância do DAO
DatabaseHelper helper = new DatabaseHelper(getContext());
ClienteDao dao = new ClienteDao(helper.getConnectionSource());
sábado, 27 de outubro de 12
Persistindo um objeto
sábado, 27 de outubro de 12
dao.create(cliente);
sábado, 27 de outubro de 12
Buscando todos os objetos
sábado, 27 de outubro de 12
dao.queryForAll()
sábado, 27 de outubro de 12
Buscando por id
sábado, 27 de outubro de 12
dao.queryForId(id)
sábado, 27 de outubro de 12
Buscando por qualquer campo
sábado, 27 de outubro de 12
dao.queryForEq(fieldName, value)
sábado, 27 de outubro de 12
Exercício• Criar estrutura para se trabalhar com banco
de dados
• Criar uma classe que será persistida
• Criar o DAO dessa classe
• Criar tela com edits, cada edit será um campo
• Inserir botão de gravar
• Inserir botão para imprimir todos os dados no log
sábado, 27 de outubro de 12