Problem with Update Listview associated with Sqlite

0

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();
        }
    }
}
    
asked by Carlosd 06.11.2018 в 17:27
source

0 answers