Atualizando ListView com BaseAdapter e LoaderCallbacks<Cursor> é possível
2 respostas
T
trioinformatica
Estou com dificuldades para atualizar minha lista quando adiciono ou removo um item da lista.
são 2 problemas que ocorrem: quando removo o item sai da lista, e é deletado do banco de dados, mas, a ordem que é removido da lista está errado, exemplo: tenho três itens, removo o num 2 mas na lista some o 1, se eu apagar todos, todos saem da lista mas, em ordem diferente da qual eu cliquei.
o outro problema é que eu não sei como atualizar a lista quando eu adiciono um item na tabela do banco de dados; eu tenho na tela acima da lista 2 campos EditText e um botão que ao pressionar adiciona o conteudo dos campo na base de dados e teria que atualizar a lista abaixo, mas não sei como fazer isso, ou como atualizar o meu adaptador.
se alguem puder me orientar, agradeço antecipadamente. Obrigado.
packagebr.com.ated.proj_sigmass_v01;importjava.util.ArrayList;importjava.util.List;importbr.com.ated.proj_sigmass_v01.dao.BaseDados;importbr.com.ated.proj_sigmass_v01.entity.ECResumo1;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.Context;importandroid.content.DialogInterface;importandroid.database.Cursor;importandroid.database.DataSetObserver;importandroid.os.Bundle;importandroid.support.v4.app.LoaderManager.LoaderCallbacks;importandroid.support.v4.content.Loader;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.view.ViewGroup;importandroid.widget.ArrayAdapter;importandroid.widget.BaseAdapter;importandroid.widget.Button;importandroid.widget.CheckBox;importandroid.widget.CompoundButton;importandroid.widget.EditText;importandroid.widget.ListView;importandroid.widget.TextView;publicclassAdapterResumo01extendsBaseAdapter{privateArrayList<DataSetObserver>observers=newArrayList<DataSetObserver>();privateListViewlistView;privateContextcontext;privateList<ECResumo1>mSource;privateLayoutInflatermInflater;privateViewHolderholder;privateAnotacaoListenercallback;privateBaseDadosdao;privateBaseAdapteradapter;// = (BaseAdapter) listView.getAdapter();privateintposicao;staticclassViewHolder{privateButtonBtn_Excluir;privateTextViewtv_numeros;privateTextViewtv_ferramentas;}@OverridepublicintgetCount(){if(mSource!=null){returnmSource.size();}return0;}@OverridepublicObjectgetItem(intposition){// mSource = (ArrayList<ECResumo1>) dao.listarResumo1_por_idaudit((((VarGlobal) context.getApplicationContext()).getId_audit()));if(mSource!=null&&position>=0&&position<getCount()){ECResumo1fase=this.mSource.get(position);returnfase;}returnnull;}@OverridepubliclonggetItemId(intposition){mSource=(ArrayList<ECResumo1>)dao.listarResumo1_por_idaudit((((VarGlobal)context.getApplicationContext()).getId_audit()));if(mSource!=null&&position>=0&&position<getCount()){ECResumo1fase=this.mSource.get(position);returnfase.getId();}return0;}publicAdapterResumo01(Contextcontext,List<ECResumo1>mSource){mInflater=LayoutInflater.from(context);this.mSource=mSource;this.context=context;}@OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){dao=newBaseDados(context);posicao=position;finalECResumo1fase=this.mSource.get(position);Viewview=convertView;if(convertView!=null){holder=(ViewHolder)view.getTag();}else{view=mInflater.inflate(R.layout.resumo01_dados,null);holder=newViewHolder();// listView = (ListView) view.findViewById(R.id.listaFerramentas); // adapter = (BaseAdapter) listView.getAdapter();holder.tv_numeros=(TextView)view.findViewById(R.id.tv_numeros);holder.tv_ferramentas=(TextView)view.findViewById(R.id.tv_ferramentas);holder.Btn_Excluir=(Button)view.findViewById(R.id.Btn_Excluir);holder.Btn_Excluir.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){if(v.getId()==R.id.Btn_Excluir){AlertDialogalertDialog=newAlertDialog.Builder(context).create();alertDialog.setTitle("Deseja realmente excluir?");alertDialog.setIcon(R.drawable.ic_launcher);alertDialog.setMessage(fase.getId().toString()+" Ao clicar em SIM será excluído permanentemente!");alertDialog.setButton("SIM",newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhich){// metodo de exclusãodao.removerResumo1((long)fase.getId());// metodo que regarrega a listamSource.remove(posicao);notifyDataSetChanged();}});alertDialog.setButton2("NÃO",newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intwhich){return;}});alertDialog.show();}}});view.setTag(holder);}ECResumo1res=mSource.get(position);holder.tv_numeros.setText(res.getNumero());holder.tv_ferramentas.setText(res.getDescricao());returnview;}publicvoidregisterDataSetObserver(DataSetObserverobserver){observers.add(observer);}publicvoidnotifyDataSetChanged(){for(DataSetObserverobserver:observers){observer.onChanged();}}}