25
Etapa 3: 1.1 ListarDesejos – Deve ser capaz de consultar todos os desejos cadastrados no banco de dados e exibir na Activity através de um ListView (ou similar). package com.anhaguera.pos.listadedesejos; import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import com.anhaguera.pos.listadedesejos.modelos.Desejo; public class ListaDesejos extends Activity implements ActionBar.OnNavigationListener { /** * The serialization (saved instance state) Bundle key representing the * current dropdown position. */ private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_lista_desejos); // Set up the action bar to show a dropdown list. final ActionBar actionBar = getActionBar(); actionBar.setDisplayShowTitleEnabled(false); actionBar.setNavigationMode(ActionBar.DISPLAY_SHOW_TITLE);

Android Etapas 3 e 4

Embed Size (px)

DESCRIPTION

Códigos de aplicação Android

Citation preview

Etapa 3:

1.1 ListarDesejos Deve ser capaz de consultar todos os desejos cadastrados no banco de dados e exibir na Activity atravs de um ListView (ou similar).

package com.anhaguera.pos.listadedesejos;

import android.app.ActionBar;import android.app.Activity;import android.app.Fragment;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;

import com.anhaguera.pos.listadedesejos.modelos.Desejo;

public class ListaDesejos extends Activity implementsActionBar.OnNavigationListener {

/** * The serialization (saved instance state) Bundle key representing the * current dropdown position. */private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item";

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_lista_desejos);

// Set up the action bar to show a dropdown list.final ActionBar actionBar = getActionBar();actionBar.setDisplayShowTitleEnabled(false);actionBar.setNavigationMode(ActionBar.DISPLAY_SHOW_TITLE);

/* * // Set up the dropdown list navigation in the action bar. * actionBar.setListNavigationCallbacks( // Specify a SpinnerAdapter to * populate the dropdown list. new * ArrayAdapter(actionBar.getThemedContext(), * android.R.layout.simple_list_item_1, android.R.id.text1, new String[] * { getString(R.string.title_section1), * getString(R.string.title_section2), * getString(R.string.title_section3), }), this); ... gerado pelo * eclipse . . . */

preencheLista();

}

/** * Registra o mtodo ouvinte sobre a lista. */private void associaListenerALista() {ListView listagem = (ListView) findViewById(R.id.lista_desejos);listagem.setOnItemClickListener(new OnItemClickListener() {

@Overridepublic void onItemClick(AdapterView parent, View view,int position, long id) {selecaoDeDesejo(parent, view, position, id);

}});DesejoEao eao = new DesejoEao(this);}

/** * Ao ao clicar sobre um item da lista. * * @param parent * @param view * @param position * @param id */private void selecaoDeDesejo(AdapterView parent, View view,int position, long id) {DesejodesejoSelecionado = (Desejo) parent.getItemAtPosition(position);Intent intencao = new Intent(this, DetalhesDesejo.class);intencao.putExtra("desejo", desejoSelecionado);startActivity(intencao);

}

@Overridepublic void onRestoreInstanceState(Bundle savedInstanceState) {// Restore the previously serialized current dropdown position.if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {getActionBar().setSelectedNavigationItem(savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));}}

@Overridepublic void onSaveInstanceState(Bundle outState) {// Serialize the current dropdown position.outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActionBar().getSelectedNavigationIndex());}

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.lista_desejos, menu);return true;}

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.inserir_action) {Intent intencao = new Intent(this, InserirDesejo.class);startActivity(intencao);return true;}return super.onOptionsItemSelected(item);

}

/** * A placeholder fragment containing a simple view. */public static class PlaceholderFragment extends Fragment {/** * The fragment argument representing the section number for this * fragment. */private static final String ARG_SECTION_NUMBER = "section_number";

/** * Returns a new instance of this fragment for the given section number. */public static PlaceholderFragment newInstance(int sectionNumber) {PlaceholderFragment fragment = new PlaceholderFragment();Bundle args = new Bundle();args.putInt(ARG_SECTION_NUMBER, sectionNumber);fragment.setArguments(args);return fragment;}

public PlaceholderFragment() {}

}

@Overridepublic boolean onNavigationItemSelected(int itemPosition, long itemId) {// TODO Auto-generated method stubreturn false;}

/** * Coloca valores na lista de desejos. */private void preencheLista() {ListView listagem = (ListView) findViewById(R.id.lista_desejos);DesejoEao eao = new DesejoEao(this);DesejoAdapter adptador = new DesejoAdapter(this, eao.getAll());listagem.setAdapter(adptador);associaListenerALista();}

}

package com.anhaguera.pos.listadedesejos;

import java.util.ArrayList;import java.util.List;

import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;

import com.anhaguera.pos.listadedesejos.modelos.Desejo;

/** * Gerenciador do banco de dados. Cria as tabelas / Colunas do banco de dados. * Cria tambm os esquemas dos bancos. Transforma o objeto do Java em uma linha * no banco, e vice versa. */public class DesejoEao extends SQLiteOpenHelper {

public DesejoEao(Context context) {super(context, "ListaDeDesejos", null, 32);}

/** * Busca todos os registros do banco. * * @return todos os registros do banco. */public List getAll() {String sql = null;Cursor result = null;List all = new ArrayList();try {sql = "SELECT * FROM DESEJOS";result = getReadableDatabase().rawQuery(sql, null);

while (result.moveToNext()) {Desejo desejo = new Desejo();desejo.setId(result.getInt(result.getColumnIndex("id")));desejo.setProduto(result.getString(result.getColumnIndex("produto")));desejo.setCategoria(result.getString(result.getColumnIndex("categoria")));desejo.setLojas(result.getString(result.getColumnIndex("lojas")));desejo.setPrecoMaximo(result.getDouble(result.getColumnIndex("preco_maximo")));desejo.setPrecoMinimo(result.getDouble(result.getColumnIndex("preco_minimo")));all.add(desejo);}} catch (Throwable e) {e.printStackTrace();Log.e("app_error","Ocorreu um erro de conexo com o banco de dados");} finally {// if (result != null)// result.close();

}return all;

}

@Overridepublic void onCreate(SQLiteDatabase db) {try {String sql = "create table desejos"+ " (id integer primary key, produto text not null, "+ "categoria text, lojas text, preco_maximo real, preco_minimo real);";db.execSQL(sql);} finally {// db.close();}

}

@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {if (newVersion > oldVersion) {try {String sql = "DROP table desejos";db.execSQL(sql);onCreate(db);} finally {// db.close();}}}

public void insere(Desejo desejo) {try {ContentValues values = new ContentValues();values.put("produto", desejo.getProduto());values.put("categoria", desejo.getCategoria());values.put("lojas", desejo.getLojas());values.put("preco_minimo", desejo.getPrecoMinimo());values.put("preco_maximo", desejo.getPrecoMaximo());if (desejo.getId() == 0) {getWritableDatabase().insert("desejos", null, values);} else {String[] whereArgs = { String.valueOf(desejo.getId()) };getWritableDatabase().update("desejos", values, "id = ?",whereArgs);}} finally {// getWritableDatabase().close();}

}

/** * @param desejoSelecionado */public void deleta(int id) {try {String[] whereArgs = { String.valueOf(id) };getWritableDatabase().delete("desejos", "id = ?", whereArgs);} finally {// getWritableDatabase().close();}}

}

1.2 AdicionarDesejo Deve ser capaz de incluir um desejo no banco de dados.

package com.anhaguera.pos.listadedesejos;

import android.annotation.SuppressLint;import android.app.Activity;import android.app.Fragment;import android.content.Intent;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.EditText;

import com.anhaguera.pos.listadedesejos.modelos.Desejo;

@SuppressLint("ValidFragment")public class InserirDesejo extends Activity {

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_inserir_desejo);

Intent i = getIntent();Desejo a = (Desejo) i.getSerializableExtra("desejo");

if (savedInstanceState == null) {getFragmentManager().beginTransaction().add(R.id.container2, new PlaceholderFragment(a)).commit();}}

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.inserir_desejo, menu);return true;}

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();Intent i = getIntent();Desejo a = (Desejo) i.getSerializableExtra("desejo");if (id == R.id.salvar_action) {salvarDesejo(a);Intent intencao = new Intent(this, ListaDesejos.class);startActivity(intencao);return true;}return super.onOptionsItemSelected(item);}

private void confirmaDelecaoDesejo(Desejo desejoSelecionado) {DesejoEao eao = new DesejoEao(this);eao.deleta(desejoSelecionado.getId());}

/** * Recupera as informaes da tela e envia ao gerenciador do banco de dados. * @param a * */private void salvarDesejo(Desejo desejo) {if (desejo==null){ desejo = new Desejo();}EditText nome = (EditText) findViewById(R.id.inserir_desejo_nome);desejo.setProduto(nome.getText().toString());

EditText categoria = (EditText) findViewById(R.id.inserir_desejo_categoria);desejo.setCategoria(categoria.getText().toString());

EditText lojas = (EditText) findViewById(R.id.inserir_desejo_loja);desejo.setLojas(lojas.getText().toString());

EditText precoMinimo = (EditText) findViewById(R.id.inserir_desejo_minimo);desejo.setPrecoMinimo(Double.valueOf((precoMinimo.getText().toString())));

EditText precoMaximo = (EditText) findViewById(R.id.inserir_desejo_maximo);desejo.setPrecoMaximo(Double.valueOf((precoMaximo.getText().toString())));

DesejoEao eao = new DesejoEao(this);eao.insere(desejo);}

/** * A placeholder fragment containing a simple view. */public static class PlaceholderFragment extends Fragment {

private Desejo desejo;

public PlaceholderFragment(Desejo a) {desejo = a;}

@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View rootView = inflater.inflate(R.layout.fragment_inserir_desejo,container, false);if (desejo != null) {EditText nome = (EditText) rootView.findViewById(R.id.inserir_desejo_nome);nome.setText(desejo.getProduto());

EditText categoria = (EditText) rootView.findViewById(R.id.inserir_desejo_categoria);categoria.setText(desejo.getCategoria());

EditText loja = (EditText) rootView.findViewById(R.id.inserir_desejo_loja);loja.setText(desejo.getLojas());

EditText minimo = (EditText) rootView.findViewById(R.id.inserir_desejo_minimo);minimo.setText(String.valueOf(desejo.getPrecoMinimo()));

EditText maximo = (EditText) rootView.findViewById(R.id.inserir_desejo_maximo);maximo.setText(String.valueOf(desejo.getPrecoMaximo()));}

return rootView;}}

}

Adicionando um desejo:

Desejo adicionado:

1.3 DetalharDesejo Deve ser capaz de exibir os detalhes do Desejo. A partir dessa Activity, deve ser possvel ir para a Activity Alterar Desejo e acionar a funcionalidade Excluir Desejo.

1.4 AlterarDesejo Deve ser capaz de alterar os dados de um Desejo previamente cadastrado no banco de dados.

2. Programar a funcionalidade Excluir Desejo Deve ser capaz de excluir um desejo previamente cadastrado no banco de dados.

package com.anhaguera.pos.listadedesejos;

import android.annotation.SuppressLint;import android.app.Activity;import android.app.AlertDialog;import android.app.Fragment;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.ImageButton;import android.widget.TextView;import android.widget.Toast;

import com.anhaguera.pos.listadedesejos.modelos.Desejo;

@SuppressLint("ValidFragment")public class DetalhesDesejo extends Activity {

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_detalhes_desejo);

Intent i = getIntent();Desejo a = (Desejo) i.getSerializableExtra("desejo");

if (savedInstanceState == null) {getFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment(a)).commit();}}

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.detalhes_desejo, menu);return true;}

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();Intent i = getIntent();final Desejo desejoSelecionado = (Desejo) i.getSerializableExtra("desejo");

if (id == R.id.action_edicao_desejo) {Intent intencao = new Intent(this, InserirDesejo.class);intencao.putExtra("desejo", desejoSelecionado);startActivity(intencao);return true;

}if (id == R.id.action_remocao_desejo) {

// Cria o gerador do AlertDialogAlertDialog.Builder builder = new AlertDialog.Builder(this);// define o titulobuilder.setTitle("Atencao Deseja realmente apagar o registro: "+ "\n" + desejoSelecionado.getProduto() + "?");// define a mensagembuilder.setMessage("Qualifique este software");// define um boto como positivobuilder.setPositiveButton("Sim, desejo",new DialogInterface.OnClickListener() {public void onClick(DialogInterface arg0, int arg1) {confirmaDelecaoDesejo(desejoSelecionado);Intent intencao = new Intent(DetalhesDesejo.this,ListaDesejos.class);startActivity(intencao);}});// define um boto como negativo.builder.setNegativeButton("No, Muito obrigado por me informar.",new DialogInterface.OnClickListener() {public void onClick(DialogInterface arg0, int arg1) {Toast.makeText(DetalhesDesejo.this,"Cancelado" + arg1, Toast.LENGTH_SHORT).show();}});// cria o AlertDialogAlertDialog alerta = builder.create();// Exibealerta.show();

return true;

}

return super.onOptionsItemSelected(item);}

private void confirmaDelecaoDesejo(Desejo desejoSelecionado) {DesejoEao eao = new DesejoEao(this);eao.deleta(desejoSelecionado.getId());}

/** * A placeholder fragment containing a simple view. */public static class PlaceholderFragment extends Fragment {

private Desejo desejo;

public PlaceholderFragment(Desejo a) {desejo = a;}

@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View rootView = inflater.inflate(R.layout.fragment_detalhes_desejo,container, false);

TextView nome = (TextView) rootView.findViewById(R.id.detalhe_desejo_nome);nome.setText(desejo.getProduto());

TextView categoria = (TextView) rootView.findViewById(R.id.detalhe_desejo_Categoria);categoria.setText(desejo.getCategoria());

TextView loja = (TextView) rootView.findViewById(R.id.detalhe_desejo_loja);loja.setText(desejo.getLojas());

TextView minimo = (TextView) rootView.findViewById(R.id.detalhe_desejo_minimo);minimo.setText(String.valueOf(desejo.getPrecoMinimo()));

TextView maximo = (TextView) rootView.findViewById(R.id.detalhe_desejo_maximo);maximo.setText(String.valueOf(desejo.getPrecoMaximo()));

ImageButton btnBuscarBuscape = (ImageButton) rootView.findViewById(R.id.detalhe_desejo_btn_buscar);

btnBuscarBuscape.setOnClickListener(new OnClickListener() {

@Overridepublic void onClick(View v) {Intent i = new Intent(getActivity(), BuscaBuscape.class);i.putExtra("url", "http://www.buscape.com.br/"+ desejo.getProduto().replace(" ", "+"));startActivity(i);}});

return rootView;}}

}

Tela que apresenta detalhes do desejo:

Alterar Desejo:

Desejo alterado:

Excluir desejo:

Desejo Excluido:

Etapa 4:

1. A partir da Activity ListarDesejo programar a funcionalidade Compartilhar Lista de Desejos para enviar sua lista de desejos como mensagem atravs de aplicativo compatvel a ser selecionado (ex.: SMS, E-mail, Twitter, Facebook, WhatsApp). Dica: Utilizar o widget ShareActionProvider.

2. A partir da Activity DetalharDesejo programar a funcionalidade Consultar Desejo no Buscap que dever abrir a consulta do Buscap (http://compare.buscape.com.br/+nome do produto) em um Navegador Web instalado no dispositivo mvel. Dica: Utilize a view WebView.

package com.anhaguera.pos.listadedesejos;

import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.webkit.WebView;

public class BuscaBuscape extends Activity {

private WebView webView;

public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_busca_buscape);

webView = (WebView) findViewById(R.id.webView);webView.getSettings().setJavaScriptEnabled(true);

Intent i = getIntent();webView.loadUrl(i.getStringExtra("url"));

}

}

Apresentando resultados da busca no Buscap.com: