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.
vejam meu códigos.
package br.com.ated.proj_sigmass_v01.fragment;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import br.com.ated.proj_sigmass_v01.AdapterResumo01;
import br.com.ated.proj_sigmass_v01.AnotacaoListener;
import br.com.ated.proj_sigmass_v01.R;
import br.com.ated.proj_sigmass_v01.VarGlobal;
import br.com.ated.proj_sigmass_v01.dao.BaseDados;
import br.com.ated.proj_sigmass_v01.entity.ECResumo1;
public class Resumo01 extends Fragment implements OnClickListener {
private ListView listView;
private BaseDados dao;
private EditText et_numVeezes, et_Ferramentas;
private Button btn_adicionar;
private ArrayList<ECResumo1> mSource;
private int cod_id_audit = 0;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) {
View view = inflater.inflate(R.layout.resumo01,container, false);
return view;
}
@Override
public void onStart(){
super.onStart();
cod_id_audit = (((VarGlobal) getActivity().getApplication()).getId_audit());
listView = (ListView) getActivity().findViewById(R.id.listaFerramentas);
dao = new BaseDados(getActivity());
CarregaLista();
et_numVeezes = (EditText) getActivity().findViewById(R.id.numVeezes);
et_Ferramentas = (EditText) getActivity().findViewById(R.id.et_Ferramentas);
btn_adicionar = (Button) getActivity().findViewById(R.id.btn_adicionar);
btn_adicionar.setOnClickListener(this);
}
public void CarregaLista(){
mSource = (ArrayList<ECResumo1>) dao.listarResumo1_por_idaudit(cod_id_audit);
listView.setAdapter(new AdapterResumo01(getActivity(), mSource) );
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_adicionar){
String iNumero = et_numVeezes.getText().toString();
String iDescricao = et_Ferramentas.getText().toString();
ECResumo1 resumo = new ECResumo1();
resumo.setNumero(iNumero);
resumo.setDescricao(iDescricao);
resumo.setId_audit(cod_id_audit);
dao.inserir(resumo);
((BaseAdapter) listView.getAdapter()).notifyDataSetChanged();
et_numVeezes.setText("");
et_Ferramentas.setText("");
}
}
}
Meu adaptador
package br.com.ated.proj_sigmass_v01;
import java.util.ArrayList;
import java.util.List;
import br.com.ated.proj_sigmass_v01.dao.BaseDados;
import br.com.ated.proj_sigmass_v01.entity.ECResumo1;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
public class AdapterResumo01 extends BaseAdapter {
private ArrayList<DataSetObserver> observers = new ArrayList<DataSetObserver>();
private ListView listView;
private Context context;
private List<ECResumo1> mSource;
private LayoutInflater mInflater;
private ViewHolder holder;
private AnotacaoListener callback;
private BaseDados dao;
private BaseAdapter adapter; // = (BaseAdapter) listView.getAdapter();
private int posicao;
static class ViewHolder{
private Button Btn_Excluir;
private TextView tv_numeros;
private TextView tv_ferramentas;
}
@Override
public int getCount() {
if (mSource != null){
return mSource.size();
}
return 0;
}
@Override
public Object getItem(int position) {
// mSource = (ArrayList<ECResumo1>) dao.listarResumo1_por_idaudit((((VarGlobal) context.getApplicationContext()).getId_audit()));
if (mSource != null && position >= 0 && position < getCount()){
ECResumo1 fase = this.mSource.get(position);
return fase;
}
return null;
}
@Override
public long getItemId(int position) {
mSource = (ArrayList<ECResumo1>) dao.listarResumo1_por_idaudit((((VarGlobal) context.getApplicationContext()).getId_audit()));
if (mSource != null && position >= 0 && position < getCount()){
ECResumo1 fase = this.mSource.get(position);
return fase.getId();
}
return 0;
}
public AdapterResumo01(Context context, List<ECResumo1> mSource) {
mInflater = LayoutInflater.from(context);
this.mSource = mSource;
this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
dao = new BaseDados(context);
posicao = position;
final ECResumo1 fase = this.mSource.get(position);
View view = convertView;
if (convertView != null) {
holder = (ViewHolder) view.getTag();
}
else{
view = mInflater.inflate(R.layout.resumo01_dados, null);
holder = new ViewHolder();
// 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(new OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() == R.id.Btn_Excluir){
AlertDialog alertDialog = new AlertDialog.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", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// metodo de exclusão
dao.removerResumo1((long) fase.getId());
// metodo que regarrega a lista
mSource.remove(posicao);
notifyDataSetChanged();
}
});
alertDialog.setButton2("NÃO", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
return;
}
});
alertDialog.show();
}
}
});
view.setTag(holder);
}
ECResumo1 res = mSource.get(position);
holder.tv_numeros.setText(res.getNumero());
holder.tv_ferramentas.setText(res.getDescricao());
return view;
}
public void registerDataSetObserver(DataSetObserver observer){
observers.add(observer);
}
public void notifyDataSetChanged(){
for (DataSetObserver observer: observers){
observer.onChanged();
}
}
}