Tecnologia do Blogger.
RSS

[androidbrasil-dev] Re: Percorrer ListView

On 26 mar, 21:49, Luiz Gustavo Mafra <lgma...@gmail.com> wrote:
> Veja só Neto, não sei se estou fazendo certo, mas quando eu clico no
> checkbox eu verifico se for no clicar ai eu pego o nome e telefone baseado
> no que eu ja tenho naquela linha como por no codigo
>
> chkSelecContato.setOnClickListener(new View.OnClickListener() {
>  @Override
> public void onClick(View view) {
> CheckBox cb = (CheckBox)view;
> ImportaContatos imp = new ImportaContatos();
> if(cb.isChecked()){
> imp.importaContatos(*entrada.getNomeContato(), entrada.getFoneContato()*);
>
> }
> }
> });
>
> entrada.getNomeContato() e entrada.getFoneContato() eu tenho naquela linha
> do checkbox, esse meu pensamento esta correto?
>
> Em 26 de março de 2012 21:24, Neto Marin <netoma...@gmail.com> escreveu:
>
> > Olha só, vc tem a instancia do checkbox, vc sabe se aquele item está como
> > checked ou não.
>
> > O q eu fiz foi saber qual a posição desse elemento, o ckeckbox, na lista,
> > que é de acordo com o array. E ai, atualizo meu array de boolean e atualizo
> > na posição de acordo com a view, com o valor de isChecked().
>
> > Não tenho como te passar um código agora porque estou dando aula (enquanto
> > o pessoal faz exercício eu ajudo aqui hehe). Mas é relativamente simples a
> > lógica, é só manter um array de boolean do mesmo tamanho da lista e marcar
> > as posições conforme vc vai selecionando.
>
> > E ai, ter um método nesse adapter q retorna esse array de boolean, e esse
> > método será chamado pelo botão que fica na interface abaixo da lista (como
> > vc descreveu).
>
> > []s
> > Neto
> > ---
> > Neto Marin
>
> > Blog:http://blog.netomarin.com
> > GTalk: netoma...@gmail.com
> > MSN: neto_ma...@hotmail.com
> > Skype: netomarin
>
> > On Mon, Mar 26, 2012 at 8:53 PM, Luiz Gustavo Mafra <lgma...@gmail.com>wrote:
>
> >> Veja só, eu não sei muito bem o que este getTag esta fazendo...rs
> >> Eu não estava acertando fazer essa implementação do click do checkbox num
> >> adapter então procurei na net e estava tentando adaptar, mas pelo visto não
> >> esta funcionando muito bem.
>
> >> Você teria algum exemplo que você tenha feito para poder me passar??
> >> Essa já é a segunda vez que tendo utilizar um checkbox em uma listview
> >> sem sucesso. =/
>
> >> Em 26 de março de 2012 20:49, Neto Marin <netoma...@gmail.com> escreveu:
>
> >> A abordagem está, não vejo nenhum problema.
>
> >>> Tanto que o CheckBox não está nulo, quem está nulo é a tag que vc está
> >>> buscando. Se o checkbox estivesse nulo, o nullpointer seria na linha getTag.
>
> >>> O q é esse Tag? O q vc quer obter com ele?
>
> >>> []s
> >>> Neto
> >>> ---
> >>> Neto Marin
>
> >>> Blog:http://blog.netomarin.com
> >>> GTalk: netoma...@gmail.com
> >>> MSN: neto_ma...@hotmail.com
> >>> Skype: netomarin
>
> >>> On Mon, Mar 26, 2012 at 8:46 PM, Luiz Gustavo Mafra <lgma...@gmail.com>wrote:
>
> >>>> Neto, esta realemente retornando null...
> >>>> Essa abordagem que usei esta correta??
>
> >>>> Em 26 de março de 2012 20:41, Neto Marin <netoma...@gmail.com>escreveu:
>
> >>>> Luiz, faz um debug e tenta ver se o código
> >>>>> *ContatosImportar ciImp = (ContatosImportar)cb.getTag();*
>
> >>>>> Está retornando alguma coisa. Pois o erro q está dando é um
> >>>>> nullpointer né...
>
> >>>>> []s
> >>>>> Neto
> >>>>> ---
> >>>>> Neto Marin
>
> >>>>> Blog:http://blog.netomarin.com
> >>>>> GTalk: netoma...@gmail.com
> >>>>> MSN: neto_ma...@hotmail.com
> >>>>> Skype: netomarin
>
> >>>>> On Mon, Mar 26, 2012 at 8:36 PM, Luiz Gustavo Mafra <lgma...@gmail.com
> >>>>> > wrote:
>
> >>>>>> A linha 66 contem o seguinte codigo
> >>>>>> *Toast.makeText(context, ciImp.getFoneContato(),
> >>>>>> Toast.LENGTH_SHORT).show();*
>
> >>>>>> Em 26 de março de 2012 20:34, Neto Marin <netoma...@gmail.com>escreveu:
>
> >>>>>> Desculpe, o número das linhas, ou destaque a linha q ele fala que da
> >>>>>>> o NullPointer, que é a linha 66:
> >>>>>>> *ContatosImportarAdapter.java:66
> >>>>>>> *
>
> >>>>>>> []s
> >>>>>>> ---
> >>>>>>> Neto Marin
>
> >>>>>>> Blog:http://blog.netomarin.com
> >>>>>>> GTalk: netoma...@gmail.com
> >>>>>>> MSN: neto_ma...@hotmail.com
> >>>>>>> Skype: netomarin
>
> >>>>>>> On Mon, Mar 26, 2012 at 8:32 PM, Luiz Gustavo Mafra <
> >>>>>>> lgma...@gmail.com> wrote:
>
> >>>>>>>> Você fala o metodo getView?? se sim segue
>
> >>>>>>>> *@Override*
> >>>>>>>> * public View getView(int position, View view, ViewGroup
> >>>>>>>> viewGroup) {*
> >>>>>>>> * final ContatosImportar entrada =
> >>>>>>>> listContatosImport.get(position);*
> >>>>>>>> * *
> >>>>>>>> * if(view == null){*
> >>>>>>>> * LayoutInflater inflater =
> >>>>>>>> (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
> >>>>>>>> *
> >>>>>>>> * view = inflater.inflate(R.layout.contatosimportar, null);*
> >>>>>>>> * }*
> >>>>>>>> * *
> >>>>>>>> * TextView idContato = (TextView)view.findViewById(R.id.idContato);
> >>>>>>>> *
> >>>>>>>> * idContato.setText(entrada.getIdContato());*
> >>>>>>>> * *
> >>>>>>>> * TextView nomeContato =
> >>>>>>>> (TextView)view.findViewById(R.id.lblNomeContato);*
> >>>>>>>> * nomeContato.setText(entrada.getNomeContato());*
> >>>>>>>> * *
> >>>>>>>> * TextView foneContato =
> >>>>>>>> (TextView)view.findViewById(R.id.lblFoneContato);*
> >>>>>>>> * foneContato.setText(entrada.getFoneContato());*
> >>>>>>>> * *
> >>>>>>>> * CheckBox chkSelecContato =
> >>>>>>>> (CheckBox)view.findViewById(R.id.chkSelecContato); *
> >>>>>>>> * chkSelecContato.setOnClickListener(new View.OnClickListener() {*
> >>>>>>>> * *
> >>>>>>>> * @Override*
> >>>>>>>> * public void onClick(View view) {*
> >>>>>>>> * CheckBox cb = (CheckBox)view;*
> >>>>>>>> * ContatosImportar ciImp = (ContatosImportar)cb.getTag();*
> >>>>>>>> * Toast.makeText(context, ciImp.getFoneContato(),
> >>>>>>>> Toast.LENGTH_SHORT).show();*
> >>>>>>>> * }*
> >>>>>>>> * });*
> >>>>>>>> * *
> >>>>>>>> * return view;*
> >>>>>>>> * }*
>
> >>>>>>>> Em 26 de março de 2012 20:29, Neto Marin <netoma...@gmail.com>escreveu:
>
> >>>>>>>> coloca as linhas do seu código, ai fica mais facil ver onde está o
> >>>>>>>>> nullpointer.
>
> >>>>>>>>> []s
>
> >>>>>>>>> ---
> >>>>>>>>> Neto Marin
>
> >>>>>>>>> Blog:http://blog.netomarin.com
> >>>>>>>>> GTalk: netoma...@gmail.com
> >>>>>>>>> MSN: neto_ma...@hotmail.com
> >>>>>>>>> Skype: netomarin
>
> >>>>>>>>> On Mon, Mar 26, 2012 at 8:26 PM, Luiz Gustavo Mafra <
> >>>>>>>>> lgma...@gmail.com> wrote:
>
> >>>>>>>>>> Estou fazendo isso no getView mas a aplicação esta dando erro.
> >>>>>>>>>> Estou fazendo da seguinte forma:
>
> >>>>>>>>>> *CheckBox chkSelecContato =
> >>>>>>>>>> (CheckBox)view.findViewById(R.id.chkSelecContato); *
> >>>>>>>>>> * chkSelecContato.setOnClickListener(new View.OnClickListener() {
> >>>>>>>>>> *
> >>>>>>>>>> * *
> >>>>>>>>>> * @Override*
> >>>>>>>>>> * public void onClick(View view) {*
> >>>>>>>>>> * CheckBox cb = (CheckBox)view;*
> >>>>>>>>>> * ContatosImportar ciImp = (ContatosImportar)cb.getTag();*
> >>>>>>>>>> * Toast.makeText(context, ciImp.getFoneContato(),
> >>>>>>>>>> Toast.LENGTH_SHORT).show();*
> >>>>>>>>>> * }*
> >>>>>>>>>> * });*
>
> >>>>>>>>>> e ai da o seguinte erro:
>
> >>>>>>>>>> *03-26 23:25:22.973: E/AndroidRuntime(460): Uncaught handler:
> >>>>>>>>>> thread main exiting due to uncaught exception*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460):
> >>>>>>>>>> java.lang.NullPointerException*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> com.simpatico.agenda.ContatosImportarAdapter$1.onClick(ContatosImportarAdap ter.java:66)
> >>>>>>>>>> *
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.view.View.performClick(View.java:2364)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.widget.CompoundButton.performClick(CompoundButton.java:98)
> >>>>>>>>>> *
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.view.View.onTouchEvent(View.java:4179)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.widget.TextView.onTouchEvent(TextView.java:6540)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.view.View.dispatchTouchEvent(View.java:3709)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEv ent(PhoneWindow.java:1659)
> >>>>>>>>>> *
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneW indow.java:1107)
> >>>>>>>>>> *
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.app.Activity.dispatchTouchEvent(Activity.java:2061)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(P honeWindow.java:1643)
> >>>>>>>>>> *
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.view.ViewRoot.handleMessage(ViewRoot.java:1691)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.os.Handler.dispatchMessage(Handler.java:99)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.os.Looper.loop(Looper.java:123)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> android.app.ActivityThread.main(ActivityThread.java:4363)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> java.lang.reflect.Method.invokeNative(Native Method)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> java.lang.reflect.Method.invoke(Method.java:521)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 860)
> >>>>>>>>>> *
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)*
> >>>>>>>>>> *03-26 23:25:22.994: E/AndroidRuntime(460): at
> >>>>>>>>>> dalvik.system.NativeStart.main(Native Method)*
>
> >>>>>>>>>> Em 26 de março de 2012 20:07, Neto Marin <netoma...@gmail.com>escreveu:
>
> >>>>>>>>>> Como você tem um elemento clicável na célula, o listener definido
> >>>>>>>>>>> no Adapter não da certo. Então, no getView do Adapter eu defino o listener
> >>>>>>>>>>> no checkbox.
>
> >>>>>>>>>>> []s
> >>>>>>>>>>> Neto
> >>>>>>>>>>> ---
> >>>>>>>>>>> Neto Marin
>
> >>>>>>>>>>> Blog:http://blog.netomarin.com
> >>>>>>>>>>> GTalk: netoma...@gmail.com
> >>>>>>>>>>> MSN: neto_ma...@hotmail.com
> >>>>>>>>>>> Skype: netomarin
>
> >>>>>>>>>>> On Mon, Mar 26, 2012 at 7:28 PM, Luiz Gustavo Mafra <
> >>>>>>>>>>> lgma...@gmail.com> wrote:
>
> >>>>>>>>>>>> Nesse caso você criou o onClickListener() dentro da classe
> >>>>>>>>>>>> adapter ou na classe que é montada a listview??
>
> >>>>>>>>>>>> Em 25 de março de 2012 21:35, Neto Marin <netoma...@gmail.com>escreveu:
>
> >>>>>>>>>>>> Eu já fiz algo assim, resolvi colocando um listener nos
> >>>>>>>>>>>>> checkbox e atualizando um array de boolean, com os mesmo indíces do array
> >>>>>>>>>>>>> de objetos que renderizam a lista.
> >>>>>>>>>>>>> Ai na ação do botão, eu percorro esse array de boolean e sei o
> >>>>>>>>>>>>> indice que quem está com checked.
>
> >>>>>>>>>>>>> []s
> >>>>>>>>>>>>> Neto
> >>>>>>>>>>>>> ---
> >>>>>>>>>>>>> Neto Marin
>
> >>>>>>>>>>>>> Blog:http://blog.netomarin.com
> >>>>>>>>>>>>> GTalk: netoma...@gmail.com
> >>>>>>>>>>>>> MSN: neto_ma...@hotmail.com
> >>>>>>>>>>>>> Skype: netomarin
>
> >>>>>>>>>>>>> On Sun, Mar 25, 2012 at 9:29 PM, Luiz Gustavo Mafra <
> >>>>>>>>>>>>> lgma...@gmail.com> wrote:
>
> >>>>>>>>>>>>>> Pessoal,
>
> >>>>>>>>>>>>>> Tenho uma listview onde nela existem dois TextView e um
> >>>>>>>>>>>>>> CheckBox e um botão no rodapé do layout.
> >>>>>>>>>>>>>> Gostaria de saber como faço para no onClick do meu botão eu
> >>>>>>>>>>>>>> percorrer a ListView e pegar os valores contidos nos TextView somente
> >>>>>>>>>>>>>> quando o CheckBox estiver checado.
>
> >>>>>>>>>>>>>> Att,
>
> >>>>>>>>>>>>>> --
> >>>>>>>>>>>>>> Luiz Gustavo S. Mafra
> >>>>>>>>>>>>>> Bacheralando em Ciência da Computação - UESC
> >>>>>>>>>>>>>> Programador PHP, dotNet, Android
>
> >>>>>>>>>>>>>> +55 73 8142 3045
> >>>>>>>>>>>>>> +55 73 8838 9639
> >>>>>>>>>>>>>> +55 73 8869 9799
>
> >>>>>>>>>>>>>> Site:www.lgmafra.com.br
> >>>>>>>>>>>>>> msn: gustavo...@hotmail.com
> >>>>>>>>>>>>>> twitter: @lgmafra
> >>>>>>>>>>>>>> skype: lgmafra
>
> >>>>>>>>>>>> --
> >>>>>>>>>>>> Luiz Gustavo S. Mafra
> >>>>>>>>>>>> Bacheralando em Ciência da Computação - UESC
> >>>>>>>>>>>> Programador PHP, dotNet, Android
>
> >>>>>>>>>>>> +55 73 8142 3045
> >>>>>>>>>>>> +55 73 8838 9639
> >>>>>>>>>>>> +55 73 8869 9799
>
> >>>>>>>>>>>> Site:www.lgmafra.com.br
> >>>>>>>>>>>> msn: gustavo...@hotmail.com
> >>>>>>>>>>>> twitter: @lgmafra
> >>>>>>>>>>>> skype: lgmafra
>
> >>>>>>>>>> --
> >>>>>>>>>> Luiz Gustavo S. Mafra
> >>>>>>>>>> Bacheralando em Ciência da Computação - UESC
> >>>>>>>>>> Programador PHP, dotNet, Android
>
> >>>>>>>>>> +55 73 8142 3045
> >>>>>>>>>> +55 73 8838 9639
> >>>>>>>>>> +55 73 8869 9799
>
> >>>>>>>>>> Site:www.lgmafra.com.br
> >>>>>>>>>> msn: gustavo...@hotmail.com
> >>>>>>>>>> twitter: @lgmafra
> >>>>>>>>>> skype: lgmafra
>
> >>>>>>>> --
> >>>>>>>> Luiz Gustavo S. Mafra
> >>>>>>>> Bacheralando em Ciência da Computação - UESC
> >>>>>>>> Programador PHP, dotNet, Android
>
> >>>>>>>> +55 73 8142 3045
> >>>>>>>> +55 73 8838 9639
> >>>>>>>> +55 73 8869 9799
>
> >>>>>>>> Site:www.lgmafra.com.br
> >>>>>>>> msn: gustavo...@hotmail.com
> >>>>>>>> twitter: @lgmafra
> >>>>>>>> skype: lgmafra
>
> >>>>>> --
> >>>>>> Luiz Gustavo S. Mafra
> >>>>>> Bacheralando em Ciência da Computação - UESC
> >>>>>> Programador PHP, dotNet, Android
>
> >>>>>> +55 73 8142 3045
> >>>>>> +55 73 8838 9639
> >>>>>> +55 73 8869 9799
>
> >>>>>> Site:www.lgmafra.com.br
> >>>>>> msn: gustavo...@hotmail.com
> >>>>>> twitter: @lgmafra
> >>>>>> skype: lgmafra
>
> >>>> --
> >>>> Luiz Gustavo S. Mafra
> >>>> Bacheralando em Ciência da Computação - UESC
> >>>> Programador PHP, dotNet, Android
>
> >>>> +55 73 8142 3045
> >>>> +55 73 8838 9639
> >>>> +55 73 8869 9799
>
> >>>> Site:www.lgmafra.com.br
> >>>> msn: gustavo...@hotmail.com
> >>>> twitter: @lgmafra
> >>>> skype: lgmafra
>
> >> --
> >> Luiz Gustavo S. Mafra
> >> Bacheralando em Ciência da Computação - UESC
> >> Programador PHP, dotNet, Android
>
> >> +55 73 8142 3045
> >> +55 73 8838 9639
> >> +55 73 8869 9799
>
> >> Site:www.lgmafra.com.br
> >> msn: gustavo...@hotmail.com
> >> twitter: @lgmafra
> >> skype: lgmafra
>
> --
> Luiz Gustavo S. Mafra
> Bacheralando em Ciência da Computação - UESC
> Programador PHP, dotNet, Android
>
> +55 73 8142 3045
> +55 73 8838 9639
> +55 73 8869 9799
>
> Site:www.lgmafra.com.br
> msn: gustavo...@hotmail.com
> twitter: @lgmafra
> skype: lgmafra


Luiz Gustavo,

segui o que o Neto falou pois precisava fazer isso também, vou te
enviar o código pra você, talvez sirva...eu acho que fiz certo.

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

0 comentários:

Postar um comentário