Adapter:
private List<Obj> list;
public Adapter() {
list = list();
}
public void setData(List<Obl> newList) {
this.list = newList;
}
Activity (onde você acrescenta o novo item):
private void onDataChanged() {
List<Obj> newList = getNewList();
adapter.setData(newList);
adapter.notifyDataSetChanged();
}
On 24/08/2012, at 14:55, Felipe Aron <felipearon@gmail.com> wrote:
Entendi.Você ainda passou outra opção de criar um método no adapter setData() passando a lista como parâmetro.No caso esse método ao receber a lista o que devo fazer "dentro" do adapter? Preciso referenciar a lista? Como?Desculpa perguntar tanto, mas estou um pouco confuso ainda - marinheiro de primeira viagem...rs.Em 24 de agosto de 2012 14:44, Neto Marin <netomarin@gmail.com> escreveu:
Sim, o adapter sempre monta a lista baseado nos dados q ele tem.Tanto é q, vc disse q ele só "funciona" qnd vc recria o adapter, pois nesse momento passa o objeto atualizado pra ele.[]s---
Neto Marin
Blog: http://blog.netomarin.com
GTalk: netomarin@gmail.com
MSN: neto_marin@hotmail.com
Skype: netomarin
2012/8/24 Felipe Aron <felipearon@gmail.com>Neto, não ficou muito claro essa questão.Eu tenho uma classe Singleton que controla a lista de produtos vendidos/devolvidos. É a partir dela que eu faço a devolução de um item através de um método:ItensDevolvidos.devolverItem(ItemDevolvido item);Nesse método, caso já tenha devolvido tudo, é criado um novo item denominado "Item Anterior" identificado por uma propriedade no objeto.Vi que no meu Adapter tem o método add(ItemDevolvido object) - no caso devo usar esse método para poder atualizar corretamente o adapter?Em 24 de agosto de 2012 14:12, Neto Marin <netomarin@gmail.com> escreveu:
Mas a chamada do add não é na lista, tem q ser no adapter.Ou, eu costumo ter o ArrayList na minha classe, adiciono o item nesse ArrayList e no adapter eu crio um método setData(ArrayList<type> dados), chamo esse método e depois chamo o notify...[]s
---
Neto Marin
Blog: http://blog.netomarin.com
GTalk: netomarin@gmail.com
MSN: neto_marin@hotmail.com
Skype: netomarin
2012/8/24 Felipe Aron <felipearon@gmail.com>Sim Ivan, incluo um novo objeto na lista - list.add( objeto )Após isso se chamar o método adapter.notifyDataSetChanged() - não mostra o novo registro. Somente se eu recriar o adapter. :(
E agora não entendi, pela lógica a notificação era para enxergar esse novo registro correto? Ou não?Em 24 de agosto de 2012 10:00, Ivan Java <x.surian.x@gmail.com> escreveu:
Você esta incluindo esse objeto na sua lista dentro do adapter, como no exemplo abaixo?public void addItem(SuaClasse suaClasse) {suaLista.add(suaClasse);}Em 24 de agosto de 2012 09:33, Felipe Aron <felipearon@gmail.com> escreveu:Galera um novo último problema, hehe:O método adapter.notifyDataSetChanged() atualiza corretamente o registro em questão.Na tela de Itens tem o botão "Devolver", pode ao clicar decrementa a quantidade "vendida" até zero (0). Caso clique novamente em "devolver" já com a qtde. "vendida" = 0, é incluido um novo registro na lista do adapter.Ao incluir esse novo registro e chamar o método notifyDataSetChange() ele não atualiza a lista para conter o novo registro. Somente se eu "recriar" o adapter ele irá mostrar.E agora como resolver? To tentando aqui alternativas mas até agora sem sucesso.Em 23 de agosto de 2012 14:25, Felipe Aron <felipearon@gmail.com> escreveu:
Muitíssimo obrigado galera! Funcionou direitinho! :)Em 23 de agosto de 2012 14:04, Otávio Mendes <otaviommendes@gmail.com> escreveu:
Provavelmente você tem um List na sua classe Adapter que mantém os elementos que você monta o View que será exibido na lista.Quando você decrementar esse valor, decremente também na lista e depois chame notifyDataSetChanged() do adapter.Classe Adapter:public void decrementa(int position) {Object obj = lista.get(position);obj.decrementa();lista.set(position, obj);}Na Activity:adapter.decrementa(position);adapter.notifyDatasetChanged();On 23/08/2012, at 13:58, Felipe Aron <felipearon@gmail.com> wrote:Galera, numa ListView eu mostro produtos com a coluna quantidade.Ao clicar no registro, eu decremento essa quantidade e chamo novamente meu método listView.setAdaptater() porém nesse processo ela recarrega toda a lista e volta para o início (topo).Existe uma forma de eu atualizar a ListView, sem precisar recarregar novamente pelo setAdapter(), e permanrcer no marcador selecionado?--Analista-Programador
--Analista-Programador






0 comentários:
Postar um comentário