Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Criar Sub-menu

Cara eu tenho esse app aqui que tem essa mesma ideia que a sua, e pega na moral aqui

vou mostrar pra tu as classes

public class ClienteAdapter extends BaseAdapter {

private Context ctx;
private List<ClienteVO> lista;
public ClienteAdapter(Context ctx,List<ClienteVO> lista){
this.ctx = ctx;
this.lista = lista;
}
@Override
public int getCount() {
return lista.size();
}

@Override
public Object getItem(int position) {
return lista.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View view, ViewGroup viewGroup) {
ClienteVO vo = (ClienteVO) getItem(position);
//vai retorna um layout para mim
LayoutInflater layout = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//transforma um arquivo xml em uma view
View v = layout.inflate(android.R.layout.simple_list_item_checked, null);//null e = grupo
//TextView tv_id = (TextView) v.findViewById(br.com.android.R.id.tv_id);
//tv_id.setText(vo.getId().toString());
TextView tv_nome = (TextView) v.findViewById(android.R.id.text1);
tv_nome.setText(vo.getNome().toString());
return v;
} }

public class Listar  extends Activity{
ListView lw;
List<ClienteVO> listavo;
int itemId = 0;

private static int MENU_EDITAR = 1;
private static int MENU_APAGAR = 2;
private static int MENU_CALL = 3;
private static int MENU_ONLINE = 4;
private static int MENU_LOCAL = 5;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.lista01);
lw = (ListView) findViewById(R.id.lwdados);
lw.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);//permissão para selecionar varios
final Button bt_apagar =(Button) findViewById(R.id.bt_apagar_lista01);

registerForContextMenu(lw);
lw.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
bt_apagar.setVisibility(0);//vai voltar a tela porque esta definido como gone
}
});

}
//daqui pra baixo e os @Override de menus e menus de contexto



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





Em 31 de julho de 2012 16:04, Evandro Choma <evandrochoma@gmail.com> escreveu:
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