Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Percorrer ListView

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 <netomarin@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: netomarin@gmail.com
MSN: neto_marin@hotmail.com
Skype: netomarin


On Mon, Mar 26, 2012 at 8:53 PM, Luiz Gustavo Mafra <lgmafra@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 <netomarin@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: netomarin@gmail.com
MSN: neto_marin@hotmail.com
Skype: netomarin


On Mon, Mar 26, 2012 at 8:46 PM, Luiz Gustavo Mafra <lgmafra@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 <netomarin@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: netomarin@gmail.com
MSN: neto_marin@hotmail.com
Skype: netomarin


On Mon, Mar 26, 2012 at 8:36 PM, Luiz Gustavo Mafra <lgmafra@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 <netomarin@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: netomarin@gmail.com
MSN: neto_marin@hotmail.com
Skype: netomarin


On Mon, Mar 26, 2012 at 8:32 PM, Luiz Gustavo Mafra <lgmafra@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 <netomarin@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: netomarin@gmail.com
MSN: neto_marin@hotmail.com
Skype: netomarin


On Mon, Mar 26, 2012 at 8:26 PM, Luiz Gustavo Mafra <lgmafra@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(ContatosImportarAdapter.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.superDispatchTouchEvent(PhoneWindow.java:1659)
03-26 23:25:22.994: E/AndroidRuntime(460): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.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(PhoneWindow.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 <netomarin@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: netomarin@gmail.com
MSN: neto_marin@hotmail.com
Skype: netomarin


On Mon, Mar 26, 2012 at 7:28 PM, Luiz Gustavo Mafra <lgmafra@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 <netomarin@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: netomarin@gmail.com
MSN: neto_marin@hotmail.com
Skype: netomarin



On Sun, Mar 25, 2012 at 9:29 PM, Luiz Gustavo Mafra <lgmafra@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

twitter: @lgmafra
skype: lgmafra





--
Luiz Gustavo S. Mafra
Bacheralando em Ciência da Computação - UESC
Programador PHP, dotNet, Android

twitter: @lgmafra
skype: lgmafra





--
Luiz Gustavo S. Mafra
Bacheralando em Ciência da Computação - UESC
Programador PHP, dotNet, Android

twitter: @lgmafra
skype: lgmafra





--
Luiz Gustavo S. Mafra
Bacheralando em Ciência da Computação - UESC
Programador PHP, dotNet, Android

twitter: @lgmafra
skype: lgmafra





--
Luiz Gustavo S. Mafra
Bacheralando em Ciência da Computação - UESC
Programador PHP, dotNet, Android

twitter: @lgmafra
skype: lgmafra





--
Luiz Gustavo S. Mafra
Bacheralando em Ciência da Computação - UESC
Programador PHP, dotNet, Android

twitter: @lgmafra
skype: lgmafra





--
Luiz Gustavo S. Mafra
Bacheralando em Ciência da Computação - UESC
Programador PHP, dotNet, Android

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

twitter: @lgmafra
skype: lgmafra

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

0 comentários:

Postar um comentário