Problem with updating ListView Android

0

I ask for help I have searched but I have not found what I am doing wrong so that I do not update the listview, after having modified the table with an Alertdialog I would appreciate any help.

public class Pedidos extends Activity implements AdapterView.OnItemSelectedListener {

private List<Productos> productosList = new ArrayList<Productos>();
private SQLiteDatabase db;
ListView listViewP;
TextView textTotal, prodcod, prodnombre, prodstock, prodprecio, totlin;
EditText editcantidad;

private DBHelper helper;
Spinner spinnerfamilia;
private GruposAdapter gruposAdapter;
private ProductosAdapter productosAdapter;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pedido);

    listViewP = (ListView) findViewById(R.id.listViewP);
    spinnerfamilia = (Spinner) findViewById(R.id.spinner2);
    textTotal = (TextView) findViewById(R.id.textView28);

    helper = new DBHelper(this);
    db = helper.getWritableDatabase();

    gruposAdapter = new GruposAdapter(this,android.R.layout.simple_spinner_dropdown_item, helper.recuperarGrupos());
    gruposAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinnerfamilia.setAdapter(gruposAdapter);
    spinnerfamilia.setOnItemSelectedListener(this);

    productosList = helper.recuperarProductos();
    productosAdapter = new ProductosAdapter(this,productosList);

    listViewP.setAdapter(productosAdapter);
    productosAdapter.notifyDataSetChanged();

    listViewP.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            Productos productos = productosAdapter.getItem(i);

            final String codProd;
            final Integer precio;

            codProd = productos.getCodigo();
            precio = productos.getPrecioNeto();

            final AlertDialog.Builder mBuilder = new AlertDialog.Builder(Pedidos.this);
            View mView = getLayoutInflater().inflate(R.layout.input_box, null);

            prodcod = (TextView) mView.findViewById(R.id.textView21);
            prodnombre = (TextView) mView.findViewById(R.id.textView22);
            prodstock = (TextView) mView.findViewById(R.id.textView23);
            prodprecio = (TextView) mView.findViewById(R.id.textView24);
            editcantidad = (EditText) mView.findViewById(R.id.editText11);
            totlin = (TextView) mView.findViewById(R.id.textView25);

            prodcod.setText(codProd);
            prodnombre.setText(productos.getDescripcion());
            prodstock.setText(String.valueOf(productos.getStock()));
            prodprecio.setText("Precio Neto $" + String.valueOf(precio));
            editcantidad.setText(String.valueOf(productos.getCantidad()));

            editcantidad.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                }

                @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

                }

                @Override
                public void afterTextChanged(Editable editable) {
                    if(editcantidad.getText().length()>=1) {
                         int precioU =  Math.round(precio*(1+19/100));
                         int total = Integer.valueOf(editcantidad.getText().toString()) * precioU;
                         totlin.setText(String.valueOf(total));

                    }
                }
            });


            mBuilder.setView(mView)
            .setTitle("Cantidad")
            .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                }
            })
            .setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                    helper.actualizarCantProd(codProd, Integer.valueOf(editcantidad.getText().toString()), Integer.valueOf(totlin.getText().toString()));
                }
            });

            AlertDialog dialog =   mBuilder.create();
            dialog.show();
        }

    });

    textTotal.setText("Total $" + helper.montoPedido());
}

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
    Grupos grupos = gruposAdapter.getItem(i);
    productosAdapter.getFilter().filter(Long.toString(grupos.getCodGrup()), new Filter.FilterListener() {
        @Override
        public void onFilterComplete(int i) {

        }
    });
}

@Override
public void onNothingSelected(AdapterView<?> adapterView) {

}
}
    
asked by Carlosd 16.02.2018 в 14:59
source

1 answer

0

Change here

.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                    helper.actualizarCantProd(codProd, Integer.valueOf(editcantidad.getText().toString()), Integer.valueOf(totlin.getText().toString()));
                }
            });

to this

    .setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {

                        helper.actualizarCantProd(codProd, Integer.valueOf(editcantidad.getText().toString()), Integer.valueOf(totlin.getText().toString()));
productosAdapter.notifyDataSetChanged();

                    }
                });

Each time you modify the data feed, you must notify the adapter that the information has changed.

    
answered by 16.02.2018 в 16:17