I have problems with the update of listview
, which in other activities I modify the database sqlite
, but when returning to the activity these changes are not reflected in listview
.
The event I do in onActivityResult
, which I also see that it runs well since it shows the log. what is this?
I leave here the code of what I have done:
(The database is OK, I have checked that the changes occur).
ClienteSelect Class
public class ClienteSelect extends Activity implements AdapterView.OnItemSelectedListener {
ConnectionClass connectionClass;
TextView txtPedidos, txtMontos;
private SQLiteDatabase db;
private List<Clientes> clientesList = new ArrayList<Clientes>();
private static final int PICK_ACTUALIZAR_LISTV_REQUEST = 1;
ListView lista;
private DBHelper helper;
Spinner spinnerGrupo;
private SectoresAdapter sectoresAdapter;
private ClientesAdapter adapter;
private int codven, idcli;
int request_code = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.clienteventa);
lista = (ListView) findViewById(R.id.listView);
spinnerGrupo = (Spinner) findViewById(R.id.spinner);
txtPedidos = (TextView) findViewById(R.id.textView36);
txtMontos = (TextView) findViewById(R.id.textView35);
connectionClass = new ConnectionClass();
Intent intent = getIntent();
Bundle extras = intent.getExtras();
codven = extras.getInt("codvend");
helper = new DBHelper(this);
sectoresAdapter = new SectoresAdapter(this,android.R.layout.simple_spinner_dropdown_item,helper.recuperarSectores());
sectoresAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerGrupo.setAdapter(sectoresAdapter);
spinnerGrupo.setOnItemSelectedListener(this);
clientesList = helper.recuperarClientes();
adapter = new ClientesAdapter(this, clientesList);
lista.setAdapter(adapter);
lista.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Clientes clientes = adapter.getItem(i);
idcli = clientes.getCodCli();
int orden = clientes.getOrdenVisita();
int ultcli = helper.param().getUltcliente();
if ((orden == 0 ) || (orden == (ultcli+1)) || (orden < (ultcli+1))) {
Date date = new Date();
DateFormat hourFormat = new SimpleDateFormat("HH:mm:ss");
Intent in = new Intent(ClienteSelect.this, ClientesDetalle.class);
in.putExtra("idclie", idcli);
in.putExtra("horaini", hourFormat.format(date));
in.putExtra("codvend", codven);
startActivityForResult(in, PICK_ACTUALIZAR_LISTV_REQUEST);
} else if (orden > (ultcli+1)){
Toast.makeText(ClienteSelect.this,"No puede reaizar pedido, tiene que visitar a : " + helper.buscarClienteOrden(ultcli+1).getRznSoc(), Toast.LENGTH_SHORT).show();
}
}
});
txtPedidos.setText("Cantidad Clientes con pedidos # " + String.valueOf(helper.nrocliente()) + " Total $ " + String.valueOf(helper.montoPedido()));
txtMontos.setText("Total clientes activos: " + adapter.getCount());
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PICK_ACTUALIZAR_LISTV_REQUEST) {
if (resultCode == Activity.RESULT_FIRST_USER) {
Log.i("ClienteSelect", "El usuario ha cerrado activity y Actualiza ListView");
Toast.makeText(ClienteSelect.this, "Recarga ListView", Toast.LENGTH_SHORT).show();
adapter.notifyDataSetChanged();
lista.setAdapter(adapter);
}
}
}
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
Sectores sectores = sectoresAdapter.getItem(i);
adapter.getFilter().filter(Long.toString(sectores.getCod()), new Filter.FilterListener() {
@Override
public void onFilterComplete(int i) {
}
});
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
}
Class CustomersAdapter
public class ClientesAdapter extends BaseAdapter implements Filterable {
private LayoutInflater mLayoutInflater;
private List<Clientes> clientesList;
private List<Clientes> clientesFilterList;
private ClientesFilter clientesFilter;
private Context context;
public ClientesAdapter(Context context, List data){
clientesList = data;
clientesFilterList = data;
mLayoutInflater = LayoutInflater.from(context);
this.context = context;
}
@Override
public int getCount() {
return clientesList.size();
}
@Override
public Clientes getItem(int position) {
return clientesList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
View updateView;
ViewHolder viewHolder;
if (view == null){
updateView = mLayoutInflater.inflate(R.layout.clienteventalist, null);
viewHolder = new ViewHolder();
viewHolder.rznSoc = (TextView) updateView.findViewById(R.id.textView);
viewHolder.direccion = (TextView) updateView.findViewById(R.id.textView2);
viewHolder.maquina = (TextView) updateView.findViewById(R.id.textView3);
viewHolder.codCli = (TextView) updateView.findViewById(R.id.textView4);
viewHolder.ima = (ImageView) updateView.findViewById(R.id.imageView);
viewHolder.montoped = (TextView) updateView.findViewById(R.id.textView35);
viewHolder.orden = (TextView) updateView.findViewById(R.id.textView40);
updateView.setTag(viewHolder);
} else {
updateView = view;
viewHolder = (ViewHolder) updateView.getTag();
}
final Clientes item = getItem(position);
viewHolder.rznSoc.setText(item.getRznSoc());
viewHolder.direccion.setText(item.getDireccion());
viewHolder.maquina.setText(item.getMaquina());
viewHolder.codCli.setText(String.valueOf(item.getCodCli()));
viewHolder.orden.setText(String.valueOf(item.getOrdenVisita()));
if (item.getMontoNP()>0) {
viewHolder.montoped.setText("Pedidos $ " + String.valueOf(Pedidos.valorCIva(item.getMontoNP(), 19)));
} else{
viewHolder.montoped.setText("");
}
switch (item.getEstado()){
case 0: //no hay pedido
//viewHolder.ima.setImageResource(view.INVISIBLE) ;
viewHolder.ima.setImageResource(R.mipmap.blanco);
break;
case 1:
case 2:// hay un pedido en el sistema
viewHolder.ima.setImageResource(R.mipmap.ok);
break;
case 4: //Sin Dinero para comprar
viewHolder.ima.setImageResource(R.mipmap.sindinero);
break;
case 5: // Tiene stock de Productos
viewHolder.ima.setImageResource(R.mipmap.sobrestock);
break;
case 6: // Vacaciones
viewHolder.ima.setImageResource(R.mipmap.vacaciones);
break;
case 10: // envio noticias
break;
case 11: //negocio cerrado permanentemente
viewHolder.ima.setImageResource(R.mipmap.cerrado);
break;
case 27: //Negocio Cerrado - devolver llamado
case 28: //No Esta encargado - devolver llamado
case 29: //Cliente Ocupado - devolver llamado
viewHolder.ima.setImageResource(R.mipmap.callback);
break;
case 37: //Negocio Cerrado - Volver Negocio
case 38: //No Esta encargado - Volver Negocio
case 39: //Cliente Ocupado - Volver Negocio
viewHolder.ima.setImageResource(R.mipmap.refresh);
break;
}
return updateView;
}
@Override
public Filter getFilter() {
if (clientesFilter == null) {
clientesFilter = new ClientesFilter();
}
return clientesFilter;
}
static class ViewHolder{
TextView rznSoc;
TextView direccion;
TextView maquina;
TextView codCli;
TextView montoped;
TextView orden;
ImageView ima;
}
private class ClientesFilter extends Filter
{
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
long sectorId = Long.parseLong(charSequence.toString());
FilterResults results = new FilterResults();
if (sectorId > 0) {
ArrayList<Clientes> filterList = new ArrayList<Clientes>();
for (int i = 0; i < clientesFilterList.size(); i++) {
if ( (clientesFilterList.get(i).getCodSecPalm() )== sectorId) {
Clientes clientes = clientesFilterList.get(i);
filterList.add(clientes);
}
}
results.count = filterList.size();
results.values = filterList;
} else {
results.count = clientesFilterList.size();
results.values = clientesFilterList;
}
return results;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults results) {
clientesList = (ArrayList<Clientes>)results.values;
notifyDataSetChanged();
}
}
}