Android - Consulta al grabar una tabla

 
Vista:
sin imagen de perfil
Val: 40
Ha aumentado su posición en 2 puestos en Android (en relación al último mes)
Gráfica de Android

Consulta al grabar una tabla

Publicado por Hector (35 intervenciones) el 29/12/2022 20:16:56
Hola amigos del foro, esperando que todos se encuentren muy bien, tengo un problema que al grabar los datos y traspasarlo a la tabla me graba dos veces más, este es código que utilizo.
package com.example.prueba;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import cz.msebera.android.httpclient.Header;


public class Frmmarca extends AppCompatActivity {

EditText et_busqueda, et_filas, et_tipo, et_marca, et_modelo, colFilas, colTipo, colMarca, colModelo, et_activo;
Button cmdingresar, modificar, btn_eliminar, btn_limpiar, btn_salir;
TableLayout tbldatos;
private String[]header={"N° Filas","Marca","Tipo","Modelo"};
private ArrayList<String[]> rows=new ArrayList<>();
private TableRow tableRow;
private TableDynamic tableDynamic;
private AsyncHttpClient cliente;
RequestQueue requestQueue;
AlertDialog.Builder builder;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_frmmarca);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.mipmap.ic_launcher);
et_busqueda = findViewById(R.id.txtbusqueda5);
et_filas = findViewById(R.id.txtitem);
et_filas.setEnabled(false);
et_marca = findViewById(R.id.txtmarca);
et_tipo = findViewById(R.id.txttipo);
et_modelo = findViewById(R.id.txtmodelo);
et_activo = findViewById(R.id.txtactivo5);
cmdingresar = findViewById(R.id.cmdingresar);
modificar = findViewById(R.id.cmdmodificar);
btn_eliminar = findViewById(R.id.btn_eliminar);
btn_limpiar = findViewById(R.id.btn_limpiar);
btn_salir = findViewById(R.id.btn_salir);
tbldatos = findViewById(R.id.tbldatos);
tableDynamic = new TableDynamic(tbldatos, getApplicationContext());
tableDynamic.addHeader(header);
tableDynamic.addData(getClients());
tableDynamic.backgroundHeader(Color.BLUE);
tableDynamic.backgroundData(Color.RED, Color.YELLOW);
tableDynamic.lineColor(Color.BLACK);
tableDynamic.textColorData(Color.WHITE);
tableDynamic.textColorHeader(Color.MAGENTA);
cliente = new AsyncHttpClient();
et_marca.requestFocus();
builder = new AlertDialog.Builder(this);
llenarSpinner();

cmdingresar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ejecutarServicio("http://192.168.*.*/oficina/insertar_vehiculos.php");
}
});

modificar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
modificardatos("http://192.168.*.*/oficina/editar_vehiculos.php");
}
});

btn_eliminar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
eliminardatos("http://192.168.*.*/oficina/eliminar_vehiculos.php");
}
});

btn_limpiar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
limpiardatos();
}
});

btn_salir.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
salir();
}
});
}

public void marca (View View) {
et_tipo.requestFocus();
}

public void tipo (View view) {
et_modelo.requestFocus();
}

public void modelo (View view) {
if (cmdingresar.equals(false)) {
modificar.requestFocus();
} else {
cmdingresar.requestFocus();
}
}

private ArrayList<String[]> getClients(){
return rows;
}

private void ejecutarServicio (String URL) {
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(), "Datos grabados satisfactoriamente", Toast.LENGTH_SHORT).show();
datos();
insertar();
llenarSpinner();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),error.toString(), Toast.LENGTH_SHORT).show();
}
}) {
@Nullable
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> parametros = new HashMap<String, String>();
String a = "1";
et_activo.setText(a);
parametros.put("Tipo_Vehiculo",et_tipo.getText().toString());
parametros.put("Marca_Vehiculo",et_marca.getText().toString());
parametros.put("Modelo_Vehiculo",et_modelo.getText().toString());
parametros.put("Activo",et_activo.getText().toString());
return parametros;
}
};
requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}

public void datos (){
String[]item = new String[]{et_filas.getText().toString(),et_marca.getText().toString(),et_tipo.getText().toString(),et_modelo.getText().toString()};
tableDynamic.addItems(item);
}

public void insertar(){
builder.setMessage(R.string.dialog_message2).setTitle(R.string.dialog_title);
builder.setMessage("¿Desea seguir ingresando?").setCancelable(false).setPositiveButton("Si", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//int b = 1;
//int val1 = Integer.parseInt(String.valueOf(et_filas.getText()));
//int val2 = Integer.parseInt(String.valueOf(b));
//int suma = val1 + val2;
//String valorTotal = Integer.toString(suma);
//et_filas.setText(valorTotal);
et_tipo.setText("");
et_modelo.setText("");
et_tipo.requestFocus();
}
}).setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
et_tipo.setText("");
et_marca.setText("");
et_modelo.setText("");
et_marca.requestFocus();
}
});
AlertDialog alert = builder.create();
alert.setTitle("Oficina");
alert.show();
}

private void llenarSpinner(){
try {
String url = "http://192.168.*.*/oficina/buscar_vehiculos.php";
cliente.get(url, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.d("WEB", "onSuccess: " + statusCode);
if (statusCode == 200){
mostrardatos();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Log.d("WEB", "onFailure: " + statusCode + "\nError: " + error.getMessage());
}
});
} catch (Exception e) {
e.printStackTrace();
}
}

public void mostrardatos (){
String url = "http://192.168.*.*/oficina/buscar_vehiculos.php";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("data");
for (int i = 0; i < jsonArray.length(); i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
LayoutInflater reg1 = getLayoutInflater();
View registro = reg1.inflate(R.layout.tabla,null, false);
colFilas=registro.findViewById(R.id.colFilas);
colMarca=registro.findViewById(R.id.colMarca);
colTipo=registro.findViewById(R.id.colTipo);
colModelo=registro.findViewById(R.id.colModelo);
colFilas.setText(jsonObject.getString("N_Filas"));
colMarca.setText(jsonObject.getString("Marca_Vehiculo"));
colTipo.setText(jsonObject.getString("Tipo_Vehiculo"));
colModelo.setText(jsonObject.getString("Modelo_Vehiculo"));
tbldatos.addView(registro);
}
int j = 0;
for (int x = 0; x <= tbldatos.getChildCount(); x++) {
int suma = x + j;
et_filas.setText("" + suma);
}
//int b = 1;
//int val1 = Integer.parseInt(String.valueOf(et_filas.getText()));
//int val2 = Integer.parseInt(String.valueOf(b));
//int suma = val1 - val2;
//String valorTotal = Integer.toString(suma);
//et_filas.setText(valorTotal);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
requestQueue = Volley.newRequestQueue(this);
requestQueue.add(jsonObjectRequest);
}

public void buscar(View view){
cmdingresar.setEnabled(false);
requestQueue = Volley.newRequestQueue(this);
builder.setMessage(R.string.dialog_message3).setTitle(R.string.dialog_title);
builder.setMessage("¿Desar buscar por Marca?").setCancelable(false).setPositiveButton("Si", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
tbldatos.removeAllViews();
tableDynamic.addHeader(header);
String url = "http://192.168.*.*/oficina/buscar_vehiculos1.php?Marca_Vehiculo=" + et_busqueda.getText().toString();
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
tableDynamic.backgroundHeader(Color.BLUE);
tableDynamic.backgroundData(Color.RED, Color.YELLOW);
tableDynamic.lineColor(Color.BLACK);
tableDynamic.textColorData(Color.WHITE);
tableDynamic.textColorHeader(Color.MAGENTA);
try {
JSONArray jsonArray = response.getJSONArray("data");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
LayoutInflater reg1 = getLayoutInflater();
View registro = reg1.inflate(R.layout.tabla, null, false);
colFilas = registro.findViewById(R.id.colFilas);
colTipo = registro.findViewById(R.id.colTipo);
colMarca = registro.findViewById(R.id.colMarca);
colModelo = registro.findViewById(R.id.colModelo);
colFilas.setText(jsonObject.getString("N_Filas"));
colTipo.setText(jsonObject.getString("Tipo_Vehiculo"));
colMarca.setText(jsonObject.getString("Marca_Vehiculo"));
colModelo.setText(jsonObject.getString("Modelo_Vehiculo"));
tbldatos.addView(registro);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
requestQueue.add(jsonObjectRequest);
}
}).setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
String url = "http://192.168.*.*/oficina/buscar_vehiculos2.php?N_Filas="+et_busqueda.getText().toString();
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, url, null, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
if (response.length() == 1){
try {
JSONObject jsonObject = new JSONObject(response.get(0).toString());
et_filas.setText(jsonObject.getString("N_Filas"));
et_tipo.setText(jsonObject.getString("Tipo_Vehiculo"));
et_marca.setText(jsonObject.getString("Marca_Vehiculo"));
et_modelo.setText(jsonObject.getString("Modelo_Vehiculo"));
et_activo.setText(jsonObject.getString("Activo"));
} catch (JSONException e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(Frmmarca.this, "Esta campo no ha sido ingresado aún", Toast.LENGTH_SHORT).show();
et_busqueda.setText("");
et_busqueda.requestFocus();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
requestQueue.add(jsonArrayRequest);
}
});
AlertDialog alert = builder.create();
alert.setTitle("Oficina");
alert.show();
}

private void modificardatos (String URL) {
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(), "Datos modificados satisfactoriamente", Toast.LENGTH_SHORT).show();
limpiardatos();
mostrardatos();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),error.toString(), Toast.LENGTH_SHORT).show();
}
}) {
@Nullable
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> parametros = new HashMap<String, String>();
parametros.put("Tipo_Vehiculo",et_tipo.getText().toString());
parametros.put("Marca_Vehiculo",et_marca.getText().toString());
parametros.put("Modelo_Vehiculo",et_modelo.getText().toString());
return parametros;
}
};
requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}

private void eliminardatos (String URL) {
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(), "Datos eliminados", Toast.LENGTH_SHORT).show();
limpiardatos();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),error.toString(), Toast.LENGTH_SHORT).show();
}
}) {
@Nullable
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> parametros = new HashMap<String, String>();
String a = "0";
et_activo.setText(a);
parametros.put("N_Filas",et_filas.getText().toString());
parametros.put("Activo",et_activo.getText().toString());
return parametros;
}
};
requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}

private void limpiardatos(){
tbldatos.removeAllViews();
tableDynamic.addHeader(header);
tableDynamic.backgroundHeader(Color.BLUE);
tableDynamic.backgroundData(Color.RED, Color.YELLOW);
tableDynamic.lineColor(Color.BLACK);
tableDynamic.textColorData(Color.WHITE);
tableDynamic.textColorHeader(Color.MAGENTA);
et_busqueda.setText("");
et_filas.setText("");
et_tipo.setText("");
et_marca.setText("");
et_modelo.setText("");
llenarSpinner();
et_marca.requestFocus();
}

private void salir(){
//Intent intent = new Intent(this, Mdimenu1.class);
//startActivity(intent);
//finish();
}

@Override
public void onBackPressed() {

}
}
pienso que el error puede ser en el ejecutar servicio, al momento de pinchar en el cmdingresar "INGRESAR", que graba los datos en la tabla, la cual lo realiza bien, (salvo con la excepción que mencione anteriormente que la graba dos veces lo mismo, ya que el campo clave es el ID que va incrementadose" posteriormente llama a datos en el cual llena los datos ingresados en la grilla, después realiza la pregunta Insertar Datos, si desea seguir realizando el proceso y por último el llamado de los datos y que los muestre en la grilla (todos),
favor de verlo y asesorarme soy nuevo en estas lides y me gusta aprender, desde ya muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder