Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Criar Sub-menu

fiz assim, mas o problema é o que eu passo no parâmetro? pois o view está em outra classe.


    protected void atualizarLista() {
        clientes = repositorio.listarClientes(representante);

        setListAdapter(new ClienteListAdapter(this, clientes));   
        registerForContextMenu(view);
    }



Em 31 de julho de 2012 15:45, Diogo Henrique <diogjp10@gmail.com> escreveu:
tenta colocar ele no método 
atualizarLista();

 
Diogo Henrique
(83)87344178
Rede Sociais: 
Meditando Provérbios: 





Em 31 de julho de 2012 15:36, Evandro Choma <evandrochoma@gmail.com> escreveu:

sem problemas cara, eu vi este detalhe, mas tive uns problemas, aqui, pois eu tenho uma classe ListAdapter que cria as listagens das minhas tabelas e depois tenho outra classe que apresenta ela, dai o menu de contexto iria fazer na segunda e dai não tenho o list view. segue abaixo as 2 classe pra vc ver se pode me dar uma dica de como fazer.

Obrigado desde já.

Abraços
Evandro Choma


ClienteListAdapter.java
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 = lista.get(position);
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = inflater.inflate(R.layout.cliente_lista, 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;
    }
}


ListaCliente.java
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.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 ListActivity {
    protected static final int INSERIR_EDITAR = 1;
    protected static final int LEGENDA = 2;
    protected static final int BUSCAR = 3;
   
    public static RepositorioCliente repositorio;
    private List<Cliente> clientes;
    String representante;

   
    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
       
        Bundle repres = getIntent().getExtras();
        representante = repres.get("representante").toString();
       
        repositorio = new RepositorioCliente(this);
        atualizarLista();
       
        // registerForContextMenu(list);
       
       
/*        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            Countries = getResources().getStringArray(R.array.countries);
            Arrays.sort(Countries);
           
            ListView list = (ListView)findViewById(R.id.list);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.listitem, Countries);
            list.setAdapter(adapter);
            registerForContextMenu(list);
        }
    */

    }

   
    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();
    }
}



Em 31 de julho de 2012 14:44, Diogo Henrique <diogjp10@gmail.com> escreveu:

Evandro, desculpa a depois cara mas tava no estagio só cheguei em casa agora

você tem que usar esse método aqui, registerForContextMenu(lw); onde a variável 'lw' e o seu list view, tu joga esse método no onCreate()

Diogo Henrique
(83)87344178
Rede Sociais: 
Meditando Provérbios: 





Em 31 de julho de 2012 12:00, Evandro Choma <evandrochoma@gmail.com> escreveu:

Obrigado Diogo pela dica, fiz assim, porém não abriu o menu, li em outro local que teria que registrar este menu, onde eu incluo este registro? Como ele seria?


public class ListaClientes extends ListActivity {
    protected static final int INSERIR_EDITAR = 1;
    protected static final int LEGENDA = 2;
    protected static final int BUSCAR = 3;
   
    public static RepositorioCliente repositorio;
    private List<Cliente> clientes;
    String representante;

   
    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
       
        Bundle repres = getIntent().getExtras();
        representante = repres.get("representante").toString();
       
        repositorio = new RepositorioCliente(this);
        atualizarLista();
    }

   
    protected void atualizarLista() {
        clientes = repositorio.listarClientes(representante);
        setListAdapter(new ClienteListAdapter(this, clientes));   
    }

   
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo 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();
    }
}



--
[]´s
Evandro Choma
Engenheiro da Computação



Em 31 de julho de 2012 09:32, Diogo Henrique <diogjp10@gmail.com> escreveu:

Evandro


Diogo Henrique
(83)87344178
Rede Sociais: 
Meditando Provérbios: 





Em 31 de julho de 2012 09:28, Evandro Choma <evandrochoma@gmail.com> escreveu:

Bom Dia

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 lsitagem 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.








--
[]´s
Evandro Choma
Engenheiro da Computação

--

PS:  ME PROTEJA COMO EU PROTEGI VOCE!
Se você pretende redirecionar este e-mail, por favor, apague todos os  endereços que aparecem nele. Contribua para a preservação da intimidade e sigilo individual. Outra dica de segurança é endereçá-lo no Cco ou Bcc. Desta forma, você estará protegendo a mim, seus amigos e a você mesmo. Eu, juntamente com a campanha contra a propagação de vírus, agradeço sinceramente.





--
[]´s
Evandro Choma
Engenheiro da Computação

--

PS:  ME PROTEJA COMO EU PROTEGI VOCE!
Se você pretende redirecionar este e-mail, por favor, apague todos os  endereços que aparecem nele. Contribua para a preservação da intimidade e sigilo individual. Outra dica de segurança é endereçá-lo no Cco ou Bcc. Desta forma, você estará protegendo a mim, seus amigos e a você mesmo. Eu, juntamente com a campanha contra a propagação de vírus, agradeço sinceramente.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário