Ver mensagens sem resposta | Ver tópicos ativos Hoje é 23 Mai 2013, 03:22



Este tópico está trancado, você não pode editar mensagens ou enviar respostas.  [ 3 Mensagens ] 
 [RESOLVIDO] Criar Sub-menu 
Autor Mensagem
Android application
Android application
Avatar de usuário

Data de registro: 11 Jan 2012, 11:44
Mensagens: 88
Localização: Apucarana - PR
Mensagem [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
Perfil WWW
Android application
Android application
Avatar de usuário

Data de registro: 11 Jan 2012, 11:44
Mensagens: 88
Localização: Apucarana - PR
Mensagem 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:
ClienteListAdapter
package 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;
    }
}


ListaClientes
package 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
Perfil WWW
Android Guru
Android Guru

Data de registro: 28 Jan 2011, 10:42
Mensagens: 722
Mensagem 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
Perfil
Mostrar mensagens anteriores:  Organizar por  
Este tópico está trancado, você não pode editar mensagens ou enviar respostas.   [ 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

Procurar por:

© 2007 - 2013 Portal Android - Comunidade de Desenvolvedores da Plataforma Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi