Olá pessoal sou iniciante em Java, já desenvolvo em outras linguagens, estou desenvolvendo um sistema para tablet, e estou com dificuldades para trabalhar com o ListView; meu ListView tem 2 RadioGroup e 1 EditText, carrego os dados do Banco SqlLite, bom até ai tudo bem, eu carrego a lista com os windgets e com os dados que quero normalmente, também consigo selecionar os RadioButton e escrever nos EditText, minha grande dificuldade esta na hora de ler essa lista para poder salvar no banco. Eu preciso ler a lista passando posição por posição e em cada posição pegar os valores dos RadioGroup e EditText, alguém poderia me socorrer. Desde de já meu muito obrigado.
Adiciona uma tag ao radiogroup com a posição dele no metodo getView do custom adapter
e implementa o onChange dele
[code] viewHolder.radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(View view, int checkedId)
{
int position = view.getTag(); //posição do ratiogroup na listview
switch (checkedId){
case R.id.check1:
//doSomething
break;
case R.id.check2:
//doSomething
break;
}
}
}
[/code]
moar info: http://stackoverflow.com/questions/11625990/listview-with-radiogroup-in-each-row
Obrigado pela ajuda, mas, está dando erro de NullPointerException quando acesso o viewHolder.radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() e não estou conseguindo identificar o porque, poderia me ajudar? veja meu codigo:
package br.com.ated.proj_sigmass_v01.fragment;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
import br.com.ated.proj_sigmass_v01.Constantes;
import br.com.ated.proj_sigmass_v01.MAdapter;
import br.com.ated.proj_sigmass_v01.R;
import br.com.ated.proj_sigmass_v01.dao.BaseDados;
import br.com.ated.proj_sigmass_v01.entity.Audit_Itens_List;
import br.com.ated.proj_sigmass_v01.entity.ItensTitulo;
public class Lista_ItensTitulo extends Fragment {
private BaseDados dao;
private SimpleCursorAdapter adapter;
private ListView listView;
private ArrayList<Audit_Itens_List> iItensTitulos;
private Cursor contatos;
private ArrayList<Audit_Itens_List> mSource;
private int posicao;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) {
View view = inflater.inflate(R.layout.lista_itens,container, false);
return view;
}
@Override
public void onStart(){
super.onStart();
listView = (ListView) getActivity().findViewById(R.id.listView2);
dao = new BaseDados(getActivity());
listarItensPorTitulo(getArguments());
}
private ArrayList<Audit_Itens_List> listarItensTitulo(int id) {
iItensTitulos = new ArrayList<Audit_Itens_List>();
List<ItensTitulo> listaItensTitulos = dao.buscarItensTituloPorCod_titulo(id);
int nid = 0;
for (ItensTitulo Itenstitulo : listaItensTitulos) {
iItensTitulos.add(new Audit_Itens_List(nid,Itenstitulo.getCod_titulo(),Itenstitulo.getId(),Itenstitulo.getDescricao(),false,false,false,"",false,false,false,false,false));
nid ++;
}
return iItensTitulos;
}
public void listarItensPorTitulo(Bundle bundle){
if(bundle != null && bundle.containsKey(Constantes.TITULO_SELECIONADO)){
Long myID = bundle.getLong(Constantes.TITULO_SELECIONADO);
String campos[] = {"descricao", "_id"};
listView.setAdapter(new MAdapter(getActivity(),listarItensTitulo(myID.intValue())));
}
}
}
package br.com.ated.proj_sigmass_v01;
import java.util.ArrayList;
import br.com.ated.proj_sigmass_v01.entity.Audit_Itens_List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.RadioGroup.OnCheckedChangeListener;
public class MAdapter extends ArrayAdapter<Audit_Itens_List> {
private ArrayList<Audit_Itens_List> mSource;
class ViewHolder{
RadioGroup rgGroup1;
RadioButton rb_c;
RadioButton rb_nc;
RadioButton rb_na;
RadioGroup rgGroup2;
RadioButton rb_fat;
RadioButton rb_lti;
RadioButton rb_itr;
RadioButton rb_itm;
RadioButton rb_ipa;
TextView tv_questao;
TextView tv_consideracoes;
EditText et_consideracoes;
}
private LayoutInflater mInflater;
public MAdapter(Context context, ArrayList<Audit_Itens_List> mSource) {
super(context, R.layout.lista_itens_dados, mSource);
mInflater = LayoutInflater.from(context);
}
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
holder = new ViewHolder();
if (convertView == null){
convertView = mInflater.inflate(R.layout.lista_itens_dados, null);
holder.tv_questao = (TextView) convertView.findViewById(R.id.tv_questao);
holder.tv_consideracoes = (TextView) convertView.findViewById(R.id.tv_consideracoes);
holder.et_consideracoes = (EditText) convertView.findViewById(R.id.et_consideracoes);
holder.rb_c = (RadioButton) convertView.findViewById(R.id.rb_c);
holder.rb_nc = (RadioButton) convertView.findViewById(R.id.rb_nc);
holder.rb_na = (RadioButton) convertView.findViewById(R.id.rb_na);
holder.rb_fat = (RadioButton) convertView.findViewById(R.id.rb_fat);
holder.rb_lti = (RadioButton) convertView.findViewById(R.id.rb_lti);
holder.rb_itr = (RadioButton) convertView.findViewById(R.id.rb_itr);
holder.rb_itm = (RadioButton) convertView.findViewById(R.id.rb_itm);
holder.rb_ipa = (RadioButton) convertView.findViewById(R.id.rb_ipa);
}
else {
holder =(ViewHolder) convertView.getTag();
}
holder.rgGroup1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.rb_c:
mSource.get(position).setC(true);
mSource.get(position).setNc(false);
mSource.get(position).setNa(false);
break;
case R.id.rb_nc:
mSource.get(position).setC(false);
mSource.get(position).setNc(true);
mSource.get(position).setNa(false);
break;
case R.id.rb_na:
mSource.get(position).setC(false);
mSource.get(position).setNc(false);
mSource.get(position).setNa(true);
break;
}
}
});
holder.rgGroup2.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.rb_fat:
mSource.get(position).setFac(false);
mSource.get(position).setMtc(false);
mSource.get(position).setRwc(false);
mSource.get(position).setLta(false);
mSource.get(position).setFat(true);
break;
case R.id.rb_lti:
mSource.get(position).setFac(false);
mSource.get(position).setMtc(false);
mSource.get(position).setRwc(false);
mSource.get(position).setLta(true);
mSource.get(position).setFat(false);
break;
case R.id.rb_itr:
mSource.get(position).setFac(false);
mSource.get(position).setMtc(false);
mSource.get(position).setRwc(true);
mSource.get(position).setLta(false);
mSource.get(position).setFat(false);
break;
case R.id.rb_itm:
mSource.get(position).setFac(false);
mSource.get(position).setMtc(true);
mSource.get(position).setRwc(false);
mSource.get(position).setLta(false);
mSource.get(position).setFat(false);
break;
case R.id.rb_ipa:
mSource.get(position).setFac(true);
mSource.get(position).setMtc(false);
mSource.get(position).setRwc(false);
mSource.get(position).setLta(false);
mSource.get(position).setFat(false);
break;
}
}
});
return convertView;
}
}
Pelo que vi o Radiogroup não foi referenciado a nada (objto null)
// Isso vai pegar o Radiogroup
RadioGroup radioGroup = (RadioGroup)findViewById(r.id.radioGroup1);
Era isso mesmo, to olhando esse código a horas e não vi isso, (me falta experiência rsrsrs) obrigado novamente. porem sem querer te explorar, meu código acrescentando as 2 linhas que faltavam ficou assim:
if (convertView == null){
convertView = mInflater.inflate(R.layout.lista_itens_dados, null);
holder.rgGroup1 = (RadioGroup) convertView.findViewById(R.id.rggParte1);
holder.rgGroup2 = (RadioGroup) convertView.findViewById(R.id.rggParte2);
… continuação do código
return convertView;
}
mas da pau no return convertView;
Tem idei do que pode ser?
Esqueci de comentar: se eu comentar os 2 holder.rgGroup1.setOnCheckedChangeListener(new OnCheckedChangeListener() { …
ela passa normalmente e monta minha lista …
Por enquanto não vi nada, então faz 2 coisas:
- Coloca a exception
- use tags Code como fiz no comentário anterior
Mudei o foco, meu cliente tem pressa então resolvi parar de tentar, ajustar a lista, fiz de uma outra forma,(gravando um a um). Obrigado!