Valor Null en GetItemCount - Adapter
Publicado por Matias (2 intervenciones) el 27/04/2020 03:34:34
Hola estoy iniciando con Android e intentando recoger datos de un una base de datos remota por medio de PHP y JSON y cargarlos en un Recyclerview por medio de una clase Adapter.
El problema que tengo es que me muestra el siguiente error y la aplicacion se cierra
La linea que da el error ese
El Error es
java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference[
Supongo que no es algo complicado pero intente entenderlo pero realmente no logro encontrar la solucion.
Pongo el codigo que utilizo por si pueden ayudarme.
Saludos, gracias.
El problema que tengo es que me muestra el siguiente error y la aplicacion se cierra
La linea que da el error ese
1
return playerList.size();
El Error es
java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference[
Supongo que no es algo complicado pero intente entenderlo pero realmente no logro encontrar la solucion.
Pongo el codigo que utilizo por si pueden ayudarme.
MainActivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package com.example.chessplayers;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.app.DownloadManager;
import android.os.Bundle;
import android.widget.Toast;
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.JsonObjectRequest;
import com.android.volley.toolbox.JsonRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final String URL_players = "https://zielsoft.000webhostapp.com/ad_jugadores_ad.php";
List<Players> playersLista;
RecyclerView recyclerview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerview = (RecyclerView) findViewById(R.id.recyclerView);
recyclerview.setHasFixedSize(true);
recyclerview.setLayoutManager(new LinearLayoutManager(this));
playersLista = new ArrayList<>();
loadplayers();
}
public void loadplayers() {
// Toast.makeText(this, "Iniciando", Toast.LENGTH_SHORT).show();
StringRequest stringRequest = new StringRequest(Request.Method.GET, URL_players, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(MainActivity.this, "Respondio", Toast.LENGTH_SHORT).show();
try {
JSONArray array = new JSONArray(response);
for (int i = 0; i < array.length(); i++) {
JSONObject player = array.getJSONObject(i);
playersLista.add(new Players(player.getString("nombre"), player.getString("imagen")));
}
Adapter adapter = new Adapter(MainActivity.this, playersLista);
recyclerview.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
Volley.newRequestQueue(this).add(stringRequest);
}
}
Adapter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
e com.example.chessplayers;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import java.util.List;
public class Adapter extends RecyclerView.Adapter<Adapter.PlayerViewHolder> {
private Context mCtx;
private List<Players> playerList;
public Adapter(Context mCtx, List<Players> playersList){
this.mCtx = mCtx;
this.playerList = playerList;
}
@Override
//inicializa la interface de un item y devuelve un viewholder
public PlayerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(mCtx);
View view = inflater.inflate(R.layout.lista_layout, null);
return new PlayerViewHolder(view);
}
@Override
//carga los datos del nuevo item y reutiliza el item para nuevos datos
public void onBindViewHolder(PlayerViewHolder holder, int position) {
Players player = playerList.get(position);
Glide.with(mCtx).load(player.getImagen()).into(holder.imageView);
holder.txtnombre.setText(player.getNombre());
}
@Override
//cantidad de eementos de la lista
public int getItemCount() {
return playerList.size();
}
class PlayerViewHolder extends RecyclerView.ViewHolder {
TextView txtnombre;
ImageView imageView;
public PlayerViewHolder(View itemView) {
super (itemView);
txtnombre = itemView.findViewById(R.id.txtnombreJ);
imageView = itemView.findViewById(R.id.imgJugador);
}
}
}
Saludos, gracias.
Valora esta pregunta


0