[ Foro de Java ]

syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration

02-Apr-2023 21:08
Orlando Mora
0 Respuestas

Hola, soy novato como programador, estoy haciendo un programa para uso personal. Tengo problema en la línea que corresponde: "private void guardarModelos(String jsonModelos)", me sale el error que puse en el asunto de la pregunta. Les agradecería mucho si me pueden ayudar con este problema. Dejo aquí abajo el código para que le echéis una ojeada.

package com.example.gascontrol;

//import androidx.annotation.NonNull;
import android.widget.AdapterView.OnItemClickListener;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import android.os.Bundle;

import com.example.gascontrol.Modelo;
import com.example.gascontrol.AdaptadorLista;
import java.util.concurrent.TimeUnit;
import com.example.gascontrol.R;

public class MainActivity extends Activity {
   
   private EditText editTextFecha;
   private Button botonAgregarFecha;
   //private Button botonGuardar;
   private TextView textViewFechaIngresada;
   private TextView textViewFechaActual;
   private TextView textViewDiferenciaFechas;
   private ListView listViewFechasGuardadas;
   
   //esto es para guardar datos en el listview
   private Button botonGuardar;
   //private List <Modelo> listaModelos = new ArrayList<>();
   //private void agregarModelo(String fechaIngresada, String fechaActual, String diferenciaFechas) {
       //Modelo modelo = new Modelo(fechaIngresada, fechaActual, diferenciaFechas);
       //listaModelos.add(modelo);
   //}
   
   
   //private ArrayList<Modelo> listaModelos = new ArrayList<>();
   //-----------------------------------------

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       
       botonAgregarFecha = findViewById(R.id.boton_agregar_fecha);
       editTextFecha = findViewById(R.id.edittext_fecha);
       textViewFechaIngresada = findViewById(R.id.textViewFechaIngresada);
       textViewFechaActual = findViewById(R.id.textViewFechaActual);
       textViewDiferenciaFechas = findViewById(R.id.textViewDiferenciaFechas);
       Button botonGuardar = (Button) findViewById(R.id.botonGuardar);

       // Leer los valores guardados en SharedPreferences
       SharedPreferences prefs = getSharedPreferences("MisPreferencias", Context.MODE_PRIVATE);
       String fechaIngresada = prefs.getString("fechaIngresada", "");
       String fechaActual = prefs.getString("fechaActual", "");
       String diferenciaFechas = prefs.getString("diferenciaFechas", "");

       // Mostrar los valores guardados en los TextView correspondientes
       textViewFechaIngresada.setText(fechaIngresada);
       textViewFechaActual.setText(fechaActual);
       textViewDiferenciaFechas.setText(diferenciaFechas);
       
       botonAgregarFecha.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               // Obtener fecha ingresada por el usuario
               String fechaIngresada = editTextFecha.getText().toString();
               
               // Obtener fecha actual
               Date fechaActual = Calendar.getInstance().getTime();
               SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy");
               String fechaActualFormateada = formatoFecha.format(fechaActual);
               
               // Calcular diferencia de fechas
               try {
                   Date fechaIngresadaDate = formatoFecha.parse(fechaIngresada);
                   long diferenciaEnMilisegundos = fechaActual.getTime() - fechaIngresadaDate.getTime();
                   long diferenciaEnDias = TimeUnit.MILLISECONDS.toDays(diferenciaEnMilisegundos);
                   String diferenciaFechasFormateada = String.valueOf(diferenciaEnDias) + " días";
                   textViewDiferenciaFechas.setText(diferenciaFechasFormateada);
                   
                   // Guardar los valores en SharedPreferences
                   SharedPreferences prefs = getSharedPreferences("MisPreferencias", Context.MODE_PRIVATE);
                   SharedPreferences.Editor editor = prefs.edit();
                   editor.putString("fechaIngresada", fechaIngresada);
                   editor.putString("fechaActual", fechaActualFormateada);
                   editor.putString("diferenciaFechas", diferenciaFechasFormateada);
                   editor.apply();
                   
               } catch (ParseException e) {
                   e.printStackTrace();
               }
               
               // Mostrar fechas en los TextView correspondientes
               textViewFechaIngresada.setText(fechaIngresada);
               textViewFechaActual.setText(fechaActualFormateada);
           }
       });

//////////////////////////////////////////////
     
    final List<Modelo> listaModelos = new ArrayList<>();
final AdaptadorLista adaptador = new AdaptadorLista(this, listaModelos);
ListView listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(adaptador);

// Obtener el objeto SharedPreferences
SharedPreferences prefes = getPreferences(Context.MODE_PRIVATE);

// Obtener la lista de modelos guardados en SharedPreferences
String modelosGuardados = prefes.getString("modelos", "null");

// Si hay modelos guardados, agregarlos a la lista
if (modelos != null && !modelosGuardados.isEmpty()) {
   Type tipoLista = new TypeToken<ArrayList<Modelo>>(){}.getType();
   ArrayList<Modelo> modelos = new Gson().fromJson(modelosGuardados, tipoLista);
   listaModelos.addAll(modelos);
}

botonGuardar.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
       // Obtener datos de los TextViews
       String fechaIngresada = textViewFechaIngresada.getText().toString();
       String fechaActual = textViewFechaActual.getText().toString();
       String diferenciaFechas = textViewDiferenciaFechas.getText().toString();

       // Verificar que los TextViews no estén vacíos
       if (!fechaIngresada.isEmpty() && !fechaActual.isEmpty() && !diferenciaFechas.isEmpty()) {
           // Agregar objeto Modelo a la lista
           agregarModelo(fechaIngresada, fechaActual, diferenciaFechas);

           // Limpiar TextViews
           textViewFechaIngresada.setText("");
           textViewFechaActual.setText("");
           textViewDiferenciaFechas.setText("");

           // Actualizar adaptador del ListView
           adaptador.notifyDataSetChanged();
       }
   }

   public void agregarModelo(String fechaIngresada, String fechaActual, String diferenciaFechas) {
       Modelo modelo = new Modelo(fechaIngresada, fechaActual, diferenciaFechas);
       listaModelos.add(modelo);

       // Guardar todos los modelos en SharedPreferences
       guardarModelos();
   }
});

// Guardar todos los modelos en SharedPreferences
//Aquí es en donde me da el problema
private void guardarModelos(String jsonModelos) {
   // Convertir la lista de modelos a formato JSON

   String modelosJson = new Gson().toJson(listaModelos);

   // Obtener el objeto SharedPreferences.Editor
   SharedPreferences prefes = getPreferences(Context.MODE_PRIVATE);
   SharedPreferences.Editor editor = prefes.edit();

   // Guardar la lista de modelos en SharedPreferences
   editor.putString("modelos", modelosJson);
   editor.apply();
}


// Llamar a este método para guardar todos los modelos en SharedPreferences
guardarModelos();


final class AdaptadorLista extends ArrayAdapter<Modelo> {
   private Context contexto;
   private List<Modelo> listaModelos;

   public AdaptadorLista(Context contexto, List<Modelo> listaModelos) {
       super(contexto, R.layout.fila_lista, listaModelos);
       this.contexto = contexto;
       this.listaModelos = listaModelos;
   }

   @Override
   public View getView(int posicion, View convertView, ViewGroup parent) {
       LayoutInflater inflater = LayoutInflater.from(contexto);
       View view = inflater.inflate(R.layout.fila_lista, null);

       TextView textViewFechaIngresada = view.findViewById(R.id.textViewFechaIngresada);
       TextView textViewFechaActual = view.findViewById(R.id.textViewFechaActual);
       TextView textViewDiferenciaFechas = view.findViewById(R.id.textViewDiferenciaFechas);

       Modelo modelo = listaModelos.get(posicion);

       textViewFechaIngresada.setText(modelo.getFechaIngresada());
       textViewFechaActual.setText(modelo.getFechaActual());
       textViewDiferenciaFechas.setText(modelo.getDiferenciaFechas());
           return view;
}
}  
   }
}




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)