I am doing a project trying from data froma spinner make a database search but it keeps giving me nullPointer Exception even thow my php script is working. I have seen the JSONArray onine and it shows exactly what it's supposed to so I don't really understand where or why in Android is giving me Null Pointer Exception. P.S "data" is date in portuguese and in my database the type is TimeStamp but even taking that part out it doesn't work. Please help me
Php Script
<?php
include "conn.php";
$nome_prova = $_GET["nome"];
$id_prova = "";
$tempos = array();
//$nome_prova = "50 Freestyle";
$athleteQuery = mysqli_query($conn, "SELECT `id` FROM `prova` WHERE `nome` LIKE '$nome_prova'");
$row1 = mysqli_fetch_array($athleteQuery);
$id_prova = $row1['id'];
$selectTimes = mysqli_query($conn, "SELECT A.nome, A.genero, T.tempo,T.data FROM atleta A, tempos T WHERE T.Prova_id = '$id_prova' AND A.id = T.Atleta_id;");*/
while($row = mysqli_fetch_assoc($selectTimes)){
array_push($tempos, $row);
}
echo json_encode ($tempos);
?>
Android Script
package com.example.time2swim;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
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.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.koushikdutta.async.future.FutureCallback;
import com.koushikdutta.ion.Ion;
import com.rengwuxian.materialedittext.MaterialEditText;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class VerTempos extends AppCompatActivity {
Spinner eventspinner;
Button search;
ListView listView;
List<Time> lista;
List<String> listaevent = new ArrayList<String>();
String HOST = "http://192.168.1.220/Time2Swim";
Adapter timeAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ver_tempos);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
lista = new ArrayList<Time>();
eventspinner = findViewById(R.id.event);
listView = findViewById(R.id.listViewTimes);
listaEvents();
search = findViewById(R.id.search);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String eventText = String.valueOf(eventspinner.getSelectedItem());
String url = HOST + "/Mostrar_Tempos.php?nome=" + eventText;
Ion.with(getBaseContext())
.load(url)
.asJsonArray()
.setCallback(new FutureCallback<JsonArray>() {
@Override
public void onCompleted(Exception e, JsonArray result) {
for (int i = 0; i < result.size(); i++) {
JsonObject obj = result.get(i).getAsJsonObject();
Time t = new Time();
t.setNome_atleta(obj.get("nome").getAsString());
t.setGenero_atleta(obj.get("telefone").getAsString());
t.setData(obj.get("data").getAsString());
t.setTempo(obj.get("tempo").getAsString());
lista.add(t);
}
listView = findViewById(R.id.listViewAthletes);
timeAdapter = new TimeAdapter(VerTempos.this, lista);
listView.setAdapter((ListAdapter) timeAdapter);
}
});
}
});
}
Console
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.time2swim, PID: 15141
java.lang.NullPointerException: Attempt to invoke virtual method 'int com.google.gson.JsonArray.size()' on a null object reference
at com.example.time2swim.VerTempos$1$1.onCompleted(VerTempos.java:107)
at com.example.time2swim.VerTempos$1$1.onCompleted(VerTempos.java:104)
at com.koushikdutta.async.future.SimpleFuture.handleCallbackUnlocked(SimpleFuture.java:107)
at com.koushikdutta.async.future.SimpleFuture.setComplete(SimpleFuture.java:141)
at com.koushikdutta.async.future.SimpleFuture.setComplete(SimpleFuture.java:124)
at com.koushikdutta.ion.IonRequestBuilder$1.run(IonRequestBuilder.java:244)
at com.koushikdutta.async.AsyncServer$RunnableWrapper.run(AsyncServer.java:60)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)