Quando você executar a ação que seleciona, guarde a posição do elemento da lista selecionado. Depois da atualização você manda selecionar ele de novo:
private void seiLa() {
...
int position = listView.getSelectedIntemPosition();...adapter.nofityDataSetChanged();listView.setSelection(position);
}
acho que isso deve funcionar, não testei
On 24/08/2012, at 15:49, Felipe Aron <felipearon@gmail.com> wrote:
Galera ÚLTIMA coisa pra ficar o estado da arte, rs:Ao selecionar um registro ele fica com uma cor em destaque. Ao clicar no botão Devolver/Vender ele agora faz a ação atualiza o adapter, o ponteiro continua no registro porém a cor de seleção some.Como fazer para manter a cor de seleção no registro?Estou enviando em anexo o print da tela com e sem a seleção pra ter ideia do problema.<tela-01.png><tela-02.png>Em 24 de agosto de 2012 15:19, Felipe Aron <felipearon@gmail.com> escreveu:Galera, agora sim entendi a simplicidade da coisa.No meu caso, tinha pego um ArrayAdapter já pronto no projeto - o que não me ajudou muito. Troquei para BaseAdapter, que é o que utilizo e fiz as devidas alterações conforme suas orientações, em especial o Neto e Otávio - valeu.+1 que aprendi e vai pro pacote! rsEm 24 de agosto de 2012 14:58, Otávio Mendes <otaviommendes@gmail.com> escreveu:
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
--Analista-Programador






0 comentários:
Postar um comentário