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();
}
}
Evandro, desculpa a depois cara mas tava no estagio só cheguei em casa agoravocê 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)87344178Rede 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:
EvandroDiogo Henrique(83)87344178Rede 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.
0 comentários:
Postar um comentário