Android - Consulta actualizar tabledlayou en una columna

 
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 actualizar tabledlayou en una columna

Publicado por Hector (35 intervenciones) el 26/07/2023 23:45:33
Hola amigos del foro, esperando que todos se encentren muy bien, estoy trabajando a través de un tabledlayout en el cual se elimina la fila que el usuario escoga, por ejemplo actualmente poseo 6 filas y elimino la 3 y al momento de refrescar la tabalelayout este me arroja bien que es las filas 1,2,4,5,6 y lo que pretendo hacer es que qude con el 1,2,3,4,5, mira les presento la secuencia completa que se realiza Punto 1: el usuario escoge la fila y la edita y presiona el botón eliminar:

btn_eliminar2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
eliminardatos("http://192.168.1.90/gestion/eliminar_presupuesto2.php");
}
});
Punto 2: se dirige al private que contiene la URL

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(getActivity(), "Datos eliminados", Toast.LENGTH_SHORT).show();
buscar1();
handler.postDelayed(new Runnable() {
@Override
public void run() {
List<Presupuesto2> updatedDataList = new ArrayList<>();
actualizarNumerosFila(updatedDataList);
}
}, 3000); // 3000 milisegundos = 3 segundos
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity().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("ID", txtid1.getText().toString());
return parametros;
}
};
requestQueue = Volley.newRequestQueue(getActivity());
requestQueue.add(stringRequest);
}
Punto 3: siguiendo la secuencia se dirige al buscar1():

private void buscar1(){
requestQueue = Volley.newRequestQueue(getActivity());
tbldatos.removeAllViews();
String url = "http://192.168.1.90/gestion/buscar_presupuesto5.php?Patente_Vehiculo=" + m.getText().toString();
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
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);
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.tabla4, null, false);
colFilas = registro.findViewById(R.id.colFilas);
colCantidad = registro.findViewById(R.id.colCantidad);
colRepuestos = registro.findViewById(R.id.colRepuestos);
colValor = registro.findViewById(R.id.colValor);
String id = jsonObject.getString("ID"); // Obtener el valor del campo ID
colFilas.setText(jsonObject.getString("N_Filas"));
colCantidad.setText(jsonObject.getString("Cant_Repuestos"));
colRepuestos.setText(jsonObject.getString("Repuestos"));
colValor.setText(jsonObject.getString("Valor_Repuestos"));
registro.setTag(id); // Guardar el valor de 'id' en el tag de la vista registro
tbldatos.addView(registro);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity(), error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
requestQueue.add(jsonObjectRequest);
}
punto 4: terminando dicho proceso vuelve al punto 2 se dirige al actualizar las filas, el cual es el del problema que no me actualiza las filas en forma visual:

private void actualizarNumerosFila(List<Presupuesto2> updatedDataList) {
int rowCount = tableLayout.getChildCount();

// Limpiar la lista antes de agregar nuevos elementos
updatedDataList.clear();

for (int i = 0; i < rowCount - 1; i++) { // Restamos 1 para excluir la fila del encabezado
TableRow row = (TableRow) tableLayout.getChildAt(i + 1); // Sumamos 1 para saltar la fila del encabezado

// Obtener los datos de la fila
int cantidad = Integer.parseInt(((TextView) row.getChildAt(1)).getText().toString());
String repuestos = ((TextView) row.getChildAt(2)).getText().toString();
int valor = Integer.parseInt(((TextView) row.getChildAt(3)).getText().toString());
String patente = m.getText().toString();

// Crear un objeto Presupuesto2 con los datos
Presupuesto2 item = new Presupuesto2();
item.setFilas(String.valueOf(i + 1)); // Aquí actualizamos el número de fila correctamente
item.setCantidad(cantidad);
item.setRepuesto(repuestos);
item.setValor(valor);
item.setPatente(patente);

// Agregar el objeto a la lista
updatedDataList.add(item);
}

// Finalmente, procedemos a actualizar los datos en el servidor
actualizartabla(updatedDataList);
}
si lo que pretendo hacer es que si tengo 6 filas y elimino la fila 3, cuyo proceso lo realiza bien y después de refrescar la tabledlayout me muestra así la columna N° Filas 1,2,4,5,6 y lo que quiero es que quede con 1,2,3,4,5 eso es lo que quiero hacer en el actualizarfilas, ojala que me puedan ayudar ya que desde el Jueves de la semana pasada que estoy con este problema, he hecho de todo pero no se que más hacer, cualquier otro código o explicación me la hacen saber y desde ya muchas gracias y disculpen las molestias no me gusta molestar mucho a la gente, pero en este caso me veo obligado en hacerlo
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