|
Página 1 de 1
|
[ 3 Mensagens ] |
|
[RESOLVIDO] Criar Sub-menu
| Autor |
Mensagem |
|
Evandro Choma
Android application
Data de registro: 11 Jan 2012, 11:44 Mensagens: 88 Localização: Apucarana - PR
|
 [RESOLVIDO] Criar Sub-menu
Tenho uma classe Lista Clientes que estende a ListActivity, onde lista todos os meus clientes cadastrados, nela eu tenho um menu que tem algumas opções entre elas o inserir novo e buscar, na listagem ao clicar em um cliente ele abre o buscar já passando o Id como parametro de forma que abre todos os dados do cliente na tela, gostaria de saber como faço um sub-menu de forma que ao clicar o cliente e segurar ele apareça um menu de ações a reserem realizadas naquele cliente selecionado, como o visualizar, alterar, etc.
_________________ Evandro Choma evandro@choma.com.br
A dúvida é o principio da sabedoria. Aristóteles
Editado pela última vez por Evandro Choma em 27 Ago 2012, 17:33, num total de 1 vezes
|
| 31 Jul 2012, 10:38 |
|
 |
|
Evandro Choma
Android application
Data de registro: 11 Jan 2012, 11:44 Mensagens: 88 Localização: Apucarana - PR
|
 Re: Criar Sub-menu
Descobri que preciso trabalhar com menu de contexto, fiz a implementação aqui, mas está dando um erro que não estou conseguindo resolver, algum poderia me dar uma luz? Tenho a classe ClienteListAdapter.java e a classe ListaClientes, a listaClientes utiliza a primeira para organizar os dados e apresentá-los. Veja os códigos: ClienteListAdapterpackage br. com. afv. banco. repositorio; import java. util. List; import br. com. afv. R; import br. com. afv. bean. Cliente; import android. content. Context; import android. graphics. Color; import android. view. LayoutInflater; import android. view. View; import android. view. ViewGroup; import android. widget. BaseAdapter; import android. widget. TextView; public class ClienteListAdapter extends BaseAdapter { private Context context; private List<Cliente> lista; public ClienteListAdapter (Context context, List<Cliente> lista ) { this. context = context; this. lista = lista; } public int getCount () { return lista. size(); } public Object getItem (int position ) { return lista. get(position ); } public long getItemId (int position ) { return position; } public View getView (int position, View convertView, ViewGroup parent ) { Cliente cli = (Cliente ) getItem (position ); LayoutInflater layout = (LayoutInflater ) context. getSystemService(Context. LAYOUT_INFLATER_SERVICE); View view = layout. inflate(android. R. layout. simple_list_item_checked, null); if (cli. situacao. equals("S")) { view. setBackgroundColor(Color. rgb(255, 0, 0)); } else { if (cli. situacao. equals("B")) { view. setBackgroundColor(Color. rgb(0, 255, 255)); } else { view. setBackgroundColor(Color. rgb(255, 255, 255)); } } TextView razao = (TextView ) view. findViewById(R. id. cli_razao); razao. setText(cli. razaoSocial); TextView fantasia = (TextView ) view. findViewById(R. id. cli_fantasia); fantasia. setText(cli. nomeFantasia); TextView endereco = (TextView ) view. findViewById(R. id. cli_endereco); endereco. setText(cli. tipoLogradouro + " " + cli. nomeLogradouro + ", " + cli. numLogradouro + " " + cli. complementoLogradouro); TextView bairro = (TextView ) view. findViewById(R. id. cli_bairro); bairro. setText(cli. bairro); TextView cidade = (TextView ) view. findViewById(R. id. cli_cidade); cidade. setText(cli. cidade); TextView uf = (TextView ) view. findViewById(R. id. cli_uf); uf. setText(cli. uf); TextView contato = (TextView ) view. findViewById(R. id. cli_contato); contato. setText(cli. contato); TextView telefone = (TextView ) view. findViewById(R. id. cli_telefone); telefone. setText(cli. telefone); TextView fax = (TextView ) view. findViewById(R. id. cli_fax); fax. setText(cli. fax); return view; }} ListaClientespackage br. com. afv. bean. listar; import java. util. List; import br. com. afv. banco. repositorio. ClienteListAdapter; import br. com. afv. banco. repositorio. RepositorioCliente; import br. com. afv. bean. Cliente; import br. com. afv. bean. buscar. BuscaClientes; import br. com. afv. bean. editar. EditaClientes; import br. com. afv. R; import android. app. Activity; import android. app. ListActivity; import android. content. Intent; import android. os. Bundle; import android. util. Log; import android. view. ContextMenu; import android. view. ContextMenu. ContextMenuInfo; import android. view. Menu; import android. view. MenuItem; import android. view. View; import android. widget. AdapterView; import android. widget. AdapterView. AdapterContextMenuInfo; import android. widget. ListView; public class ListaClientes extends Activity { private static int INSERIR_EDITAR = 1; private static int LEGENDA = 2; private static int BUSCAR = 3; public static RepositorioCliente repositorio; ListView lw; List<Cliente> clientes; String representante; @Override protected void onCreate (Bundle savedInstanceState ) { super. onCreate(savedInstanceState ); Bundle repres = getIntent (). getExtras(); representante = repres. get("representante"). toString(); repositorio = new RepositorioCliente (this); clientes = repositorio. listarClientes(representante ); setContentView (R. layout. cliente_lista); //lw = (ListView) findViewById(R.id.cli_razao); //lw.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);//permissão para selecionar varios registerForContextMenu (lw ); } protected void atualizarLista () { clientes = repositorio. listarClientes(representante ); // setListAdapter(new ClienteListAdapter(this, clientes)); }/* @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, INSERIR_EDITAR, 0, "Inserir Novo").setIcon(R.drawable.novo); menu.add(0, LEGENDA, 0, "Legenda").setIcon(R.drawable.copiar); menu.add(0, BUSCAR, 0, "Buscar").setIcon(R.drawable.pesquisar); return true; }
@Override public boolean onMenuItemSelected(int featureId, MenuItem item) { // Clicou no menu switch (item.getItemId()) { case INSERIR_EDITAR: // Abre a tela para incluir novo Cliente Intent edita = new Intent(ListaClientes.this, EditaClientes.class); edita.putExtra("representante", representante); edita.putExtra("id", 0); startActivity(edita); break; case LEGENDA: // Abre a tela com a legenda de cores do Cliente Intent legenda = new Intent(ListaClientes.this, LegendaCliente.class); startActivity(legenda); break; case BUSCAR: // Abre a tela para buscar o cliente Intent busca = new Intent(ListaClientes.this, BuscaClientes.class); busca.putExtra("representante", representante); busca.putExtra("id", 0); startActivity(busca); break; } return true; }
@Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); Cliente cli = clientes.get(position); int idCliente = cli.id; Intent busca = new Intent(ListaClientes.this, BuscaClientes.class); busca.putExtra("representante", representante); busca.putExtra("id", idCliente); startActivity(busca); } */ @Override public void onCreateContextMenu (ContextMenu menu, View v, ContextMenuInfo menuInfo ) { //super.onCreateContextMenu(menu, v, menuInfo); AdapterView. AdapterContextMenuInfo info = (AdapterView. AdapterContextMenuInfo)menuInfo; menu. setHeaderTitle("Cliente"); menu. add(Menu. NONE, 0, 0, "Visualizar Dados"); menu. add(Menu. NONE, 1, 1, "Alterar"); } @Override public boolean onContextItemSelected (MenuItem item ) { AdapterContextMenuInfo info = (AdapterContextMenuInfo ) item. getMenuInfo(); switch (item. getItemId()) { case 0: Log. i("AFV", "Visualizar Dados"); return true; case 1: Log. i("AFV", "Alterar Dados"); return true; default: return super. onContextItemSelected(item ); } } @Override protected void onActivityResult (int codigo, int codigoRetorno, Intent it ) { super. onActivityResult(codigo, codigoRetorno, it ); if (codigoRetorno == RESULT_OK ) { atualizarLista (); } } @Override protected void onDestroy () { super. onDestroy(); // Fecha o banco repositorio. fechar(); }} o erro que dá é na linha registerForContextMenu(lw); sendo NullPointerException
_________________ Evandro Choma evandro@choma.com.br
A dúvida é o principio da sabedoria. Aristóteles
|
| 01 Ago 2012, 15:51 |
|
 |
|
rafaeldecker
Android Guru
Data de registro: 28 Jan 2011, 10:42 Mensagens: 722
|
 Re: Criar Sub-menu
Tu podes setar onItemLongClick na lista... getListView (). setOnItemLongClickListener( new AdapterView. OnItemLongClickListener() { @Override public boolean onItemLongClick (AdapterView<?> av, View v, int position, long id ) { showDialog (position ); return true; } }); Eu usei assim uma vez e funcionou beleza
|
| 01 Ago 2012, 17:33 |
|
|
|
Página 1 de 1
|
[ 3 Mensagens ] |
|
Quem está online |
Usuários vendo este fórum: Adeja, AdrianoMM, Alan Unger, Alessandro Tavares, Alexandre de Queiroz, alexandrefett, alexandreufcg, alfredo_ej, ANDRE FELIX DE ASSIS, apoena, ARAKINIDIO, attomweb, Bass, Berbert, berchielli, Biggs Darklighter, blurkness, BornSlip, Brunohc, caio, Captain Typho, carlos.macleod, cassianotartari, Chaves, christian, Christiane, cleberkct, craudiao, criscmaia, Cristranus, culumin, czambroni, dariosena, David, dbispo, Deiapinh, Delão, dikiloco, DITÃO, dr.faro, du_sr, Eduardo - Brasil, elisa, epsilva, erissi, estratecnologia, Fernando Cardia, ferrodecaju, flaviolemos, fmakula, Francisco_Geraldo, freina, Gabriel Teófilo, gamito, glmsistemas, Governador Wilhuff Tarkin, grandebaro, HAMSES, hbarroco, hellbest, hopper.frf, ice, Idelto, inesfg, infonlinebr, jacard, jaydson, jmarcos14, johnnyjx, jrsilva, juliherms, Juliobcosta, JuniorE, laucode, leoadias, leonardodamata, leosl81, lfalcao, luizcyber, Lúcio Zanette, malucouto, MARCIOHG, marcos_trb, mauriciobreide, maurofjr, memnoch, MpassosT, mrkensley, navegador, neviim, Newton Barbosa, nilsgome, nino, nivaldo, nivea, Nute Gunray, On_7, peterson.bah, phpower1, polonia, Princesa Léia Organa, Rafael, Rafael Alencar, Rafael Felix, rafaelmonoh, raragao, reginaldo, Renan, renata, RodReis, rodrigo aguiar, rogeriokta, Roney dos Santos, sergio, sidnei.gs, SidneiCP, silvio.carlos, skcratch, slackware, snonca, srsilveira, Tangerina, tavares767, teamamus, thiagoalgo, tiago, Tiago Sousa Roch, tonholis, ttaranto, ubiratan, vaniuz, Velhinho, vilmartr, Zam Wesell, zenden1503, zorieuq e 4 visitantes |
|
Você não pode criar novos tópicos neste fórum Você não pode responder tópicos neste fórum Você não pode editar suas mensagens neste fórum Você não pode excluir suas mensagens neste fórum Você não pode enviar anexos neste fórum
|
|