0

Quisiera saber que me falta para que muestre al menos un valor.

Este es el error:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference at monchis.com.py.pruebabd.MainActivity.consultarResultado(MainActivity.java:124) at monchis.com.py.pruebabd.MainActivity$1.onClick(MainActivity.java:41)

Este es el código:

public void consultarResultado(){

        AdminSQLiteOpenHelper admin= new AdminSQLiteOpenHelper(this,"administracion",null,1);

        SQLiteDatabase bd= admin.getWritableDatabase();


        Cursor fila= bd.rawQuery("select * from usuario ", null);

       fila.moveToFirst();

        while(fila.isAfterLast()){
            list.add(fila.getString(0));
            fila.moveToNext();

        }

        adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,list);
        dynamicListView.setAdapter(adapter);




    }
Mauricio Arias Olave
  • 3,098
  • 6
  • 26
  • 55

2 Answers2

0

Si entiendo bien tu código (y el mensaje del error), dice que en esta línea:

dynamicListView.setAdapter(adapter);

El parámetro adapter es NULL. Debes verificar que el valor que le pasas a dynamicListView.setAdapter no no sea NULL.

Actualización: de acuerdo al comentario del usuario Dionicio:

El listView es nulo dado que el error dice que falla al intentar invocar al método setAdapter() en una referencia nula.

Para mas información de cómo solucionar este error, lee: ¿Cuál es la solución a todos los errores NullPointerException presentes, pasados y futuros?

Mauricio Arias Olave
  • 3,098
  • 6
  • 26
  • 55
  • El listView es nulo dado que el error dice que falla al intentar invocar al método setAdapter() en una referencia nula. – Dionicio Jan 11 '19 at 15:12
  • @Dionicio gracias por tu aporte. He editado mi respuesta, pero, si consideras que tu comentario es correcto, deberías publicarlo como respuesta. Saludos. – Mauricio Arias Olave Jan 11 '19 at 15:14
0

Primero verifica que tu ListView es creado antes de llamar al método consultarResultado();

Podrías hacer el enlace a tú listview en el onCreate u onResume de la actividad para que siempre tengas una referencia al elemento.

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

    //Obtener la referencia del ListView
    miListView =  findViewById(R.id.mi_list_view);

   //Luego consultar y estás seguro que tu elemento no sea nulo
    consultarResultado();
}

Otro caso sería asegurarte que el listView no sea nulo antes de hacer cualquier cosa.

public void consultarResultado(){
    if(miListView == null){
        Toast.makeText(getApplicationContext(), "El listView es nulo", Toast.LENGTH_SHORT).show();
        return;
    }

    // Codigo a ejecutar sino es nulo
}

También puedes acceder al listView en caso de que sea nulo para obtener su referencia y luego continuar con lo que sigue. Ejemplo:

public void consultarResultado(){
    if(miListView == null){
        //Te aseguras de obtener el listview
        miListView =  findViewById(R.id.mi_list_view);
    }

    // Codigo a ejecutar 
}
Dionicio
  • 316
  • 1
  • 7
  • Ya probé iniciando antes de mi método pero igual no funciona, me sale el mismo error. – Victor Arrúa Jan 11 '19 at 18:13
  • ¿Estás seguro? ¿Seguro que los nombres son correctos y el listview se encuentra en el layout en el cuál está tu actividad.?¿Podrías poner el layout y donde haces la llamada al método de consulta? Me parece un caso muy extraño. @VictorArrúa – Dionicio Jan 11 '19 at 18:40