我的 RecyclerView 上没有更新,也没有明显的错误

No update on my RecyclerView and No errors are visble

提问人:Rodrigo Bonilla Barreda 提问时间:11/1/2023 更新时间:11/1/2023 访问量:25

问:

这部分来自“edicionCliente”。如果我没记错的话,它会显示数据,仅此而已。屏幕左下角还有一个浮动的动作按钮。当您点击此按钮时,它将切换到“formActualizaProducto”活动。您可以在此处更新数据,您所做的更改将反映在 recyclerView 中。

if (savedInstanceState==null){
            Bundle datosAdicionales = getIntent().getExtras();
            if (datosAdicionales!=null){
                identifyProducto=datosAdicionales.getInt("identificadorProducto");
            }
        }else {
            identifyProducto=(int)savedInstanceState.getSerializable("identificadorProducto");
        }
        uConexion comunicacionVisualizaProducto = new uConexion(edicionDatos.this);
        SQLiteDatabase accionVisualizaProducto = comunicacionVisualizaProducto.getWritableDatabase();
        Cursor cursorProducto =accionVisualizaProducto.rawQuery("SELECT * FROM "+TABLE_NAME+" ORDER BY idTabla DESC",null);

        if (cursorProducto.moveToFirst()){
            do {
                campoIdClienteEdicion.setText(cursorProducto.getString(1));
                campoPrecioEdicion.setText(cursorProducto.getString(2));
                menuZonaEdicion.setSelection(cursorProducto.getInt(3));
                menuPaisEdicion.setSelection(cursorProducto.getInt(4));
                menuTipoProductoEdicion.setSelection(cursorProducto.getInt(5));
                menuCanalVentaEdicion.setSelection(cursorProducto.getInt(6));
                menuPrioridadEdicion.setSelection(cursorProducto.getInt(7));
                presentadoraImagenEdicion.setImageURI(Uri.parse(cursorProducto.getString(8)));

                //Quitar el acceso al teclado
                campoIdClienteEdicion.setInputType(InputType.TYPE_NULL);
                campoPrecioEdicion.setInputType(InputType.TYPE_NULL);
                menuZonaEdicion.setSelection(InputType.TYPE_NULL);
                menuPaisEdicion.setSelection(InputType.TYPE_NULL);
                menuTipoProductoEdicion.setSelection(InputType.TYPE_NULL);
                menuCanalVentaEdicion.setSelection(InputType.TYPE_NULL);
                menuPrioridadEdicion.setSelection(InputType.TYPE_NULL);
            }while (cursorProducto.moveToNext());


        }
        cursorProducto.close();

        btnEnviarEdicion.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent xcv = new Intent(edicionDatos.this,formActualizaProducto.class);
                xcv.putExtra("identificadorProducto",identifyProducto);
                startActivity(xcv);
            }
        });

这部分来自 formActualizaProducto

if (savedInstanceState == null) {
            Bundle datosAdicionales = getIntent().getExtras();
            if (datosAdicionales != null) {
                identifyProducto = datosAdicionales.getInt("identificadorProducto");
            }
        } else {
            identifyProducto = (int) savedInstanceState.getSerializable("identificadorProducto");
        }


        uConexion comunicacionVisualizaProducto = new uConexion(formActualizaProducto.this);
        SQLiteDatabase accionVisualizaProducto = comunicacionVisualizaProducto.getWritableDatabase();
        Cursor cursorProducto =accionVisualizaProducto.rawQuery("SELECT * FROM "+TABLE_NAME+" ORDER BY idTabla DESC",null);

        if (cursorProducto.moveToFirst()){
            campoIdProductoCambio.setText(cursorProducto.getString(1));
            campoPrecioProductoCambio.setText(String.valueOf(cursorProducto.getInt(2)));
            menuZonaCambio.setSelection(cursorProducto.getInt(3));
            menuPaisCambio.setSelection(cursorProducto.getInt(4));
            menuTipoProductoCambio.setSelection(cursorProducto.getInt(5));
            menuCanalVentaCambio.setSelection(cursorProducto.getInt(6));
            menuPrioridadCambio.setSelection(cursorProducto.getInt(7));
            presentadoraImagenCambio.setImageURI(Uri.parse(cursorProducto.getString(8)));
        }
        cursorProducto.close();
        btnGuardarCambios.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){

                    //validamos si el usuario ya brindo acceso...
                    if (ActivityCompat.checkSelfPermission(formActualizaProducto.this, android.Manifest.permission.CAMERA)== PackageManager.PERMISSION_GRANTED){
                        capturarFoto();


                    }else{
                        //aca se lanza un dialogo para que el usuario acepte usar el modulo correspondiente....
                        ActivityCompat.requestPermissions(formActualizaProducto.this,new String[]{Manifest.permission.CAMERA},permisoCamara);
                    }

                }else{
                    capturarFoto();
                }



                //Try y cath
                try {
                    int precioProducto = Integer.parseInt(campoPrecioProductoCambio.getText().toString());

                    accionVisualizaProducto.execSQL("UPDATE " + TABLE_NAME +
                            " SET idCliente='" + campoIdProductoCambio.getText().toString() +
                            "', precioProducto=" + precioProducto +
                            ", zonaProducto='" + menuZonaCambio.getSelectedItem().toString() +
                            "', paisProducto='" + menuPaisCambio.getSelectedItem().toString() +
                            "', tipoProducto='" + menuTipoProductoCambio.getSelectedItem().toString() +
                            "', canalVentaProducto='" + menuCanalVentaCambio.getSelectedItem().toString() +
                            "', prioridadProducto='" + menuPrioridadCambio.getSelectedItem().toString() +
                            "', fotografiaUbicaciones='" + ubicacionFoto+
                            "' WHERE idTabla=" + identifyProducto);
                } catch (Exception ex) {
                    throw new RuntimeException(ex);
                }
                Intent finalizarCambio = new Intent(formActualizaProducto.this,MainActivity.class);
                startActivity(finalizarCambio);

            }
        });

    }
    private void capturarFoto() {
        // Código para capturar la foto

        Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (i.resolveActivity(getPackageManager()) != null) {
            File imagenArchivo = null;
            try {
                imagenArchivo = crearArchivo();

                // Asegúrate de tener la ruta de la imagen
                ubicacionFoto = imagenArchivo.getAbsolutePath();

                // Lanza la cámara y espera la foto
                Uri fotoUri = FileProvider.getUriForFile(formActualizaProducto.this, "com.example.mieroles", imagenArchivo);
                i.putExtra(MediaStore.EXTRA_OUTPUT, fotoUri);
                startActivityForResult(i, codigoServicioCamara);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    }
    //el siguiente metodo, asigna el nombre a la foto recuerden que es por fecha y hora
    private File crearArchivo() throws IOException {
        String horaFecha = new SimpleDateFormat("yyyyMmdd_Hh-mm-ss", Locale.getDefault()).format(new Date());
        String nombreImagen = "IMG_"+horaFecha;

        //creamos la foto.....
        File nuevaUbicacion = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        File imagenFinal = File.createTempFile(nombreImagen,".jpg",nuevaUbicacion);

        //obtener la ruta....
        ubicacionFoto=imagenFinal.getAbsolutePath();
        return imagenFinal;

    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (permissions.length >0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){
            capturarFoto();
        }else{
            Toast.makeText(formActualizaProducto.this,"Es necesario confirmar el permiso",Toast.LENGTH_LONG).show();
        }
    }

我尝试过 ChatGPT 给我的一些建议,但老实说,如果我没有错误,我不知道为什么我的 formActualizaProducto 不能正常工作。

安卓 SQLITE 回收机查看 安卓 SQLite

评论

0赞 Rodrigo Bonilla Barreda 11/1/2023
以防万一,这里是该项目的链接:drive.google.com/file/d/1ZQbtFEtms8MfnCHbQ4QlHe6ARsvZHtHp/......

答: 暂无答案