I'm trying to create a web service using the Volley library, only when I run my app on a physical device I do not see the data that is hosted on a free server.
The data is already in JSON but it does not remain unseen, already searched on the internet and I can not find any solution.
FragmentEvents.java
public class FragmentEventos extends Fragment {
private static final String URL_EVENTS ="http://mece.260mb.net/models/eventos_json.php?i=1"; /*URL de los datos JSON*/
List<Eventos> eventosList = new ArrayList<>(); /*Lista para almacenar todos los eventos*/
RecyclerView recyclerView;
public FragmentEventos() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
final View view = inflater.inflate(R.layout.fragment_eventos, container, false);
recyclerView = view.findViewById(R.id.rcv); /*Obtenemos la vista del RecyclerView desde XML*/
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
eventosList = new ArrayList<>(); /*Inicializar la lista de los Eventos*/
//adapter = new EventosAdapter(getActivity(),eventosList);
loadEvents(); /*Este método busca y analizas JSON para mostrarlo en el RecyclerView*/
return view;
}
private void loadEvents(){
StringRequest stringRequest = new StringRequest(Request.Method.GET, URL_EVENTS,
new Response.Listener<String>(){
@Override
public void onResponse(String response) {
try{
JSONArray array = new JSONArray(response); /*Convertir la cadena en objeto JSON de tipo array*/
for (int i=0; i<array.length(); i++){ /*Atravesar el objeto*/
JSONObject event = array.getJSONObject(i); /*Obtener el objeto del Evento de JSON Array*/
eventosList.add(new Eventos( /*Agregando el evento a la lista de Eventos*/
event.getInt("id"),
event.getString("tema"),
event.getString("ponente"),
event.getString("hora"),
event.getString("fecha"),
event.getString("lugar")
));
}
EventosAdapter adapter = new EventosAdapter(getActivity(),eventosList); /*Crea el objeto adaptador y configura para el RecyclerView*/
recyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}catch (JSONException e){
e.printStackTrace();
}
}
},
new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity(),error.getMessage(),Toast.LENGTH_LONG).show();
}
});
Volley.newRequestQueue(getActivity()).add(stringRequest); /*Agregar el stringRequest a la cola*/
}
}
EventAdapter.java
public class EventosAdapter extends RecyclerView.Adapter<EventosAdapter.EventoViewHolder> {
private Context context;
private List<Eventos> eventoList;
public EventosAdapter(Context context, List<Eventos> eventoList) {
this.context = context;
this.eventoList = eventoList;
}
@Override
public EventoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.list_layout,null);
return new EventoViewHolder(view);
}
@Override
public void onBindViewHolder(EventoViewHolder holder, int position) {
Eventos eventos = eventoList.get(position);
holder.tema.setText(eventos.getTema());
holder.ponente.setText(eventos.getPonente());
holder.lugar.setText(eventos.getLugar());
holder.hora.setText(eventos.getHora());
holder.fecha.setText(eventos.getFecha());
}
@Override
public int getItemCount() {
return eventoList.size();
}
class EventoViewHolder extends RecyclerView.ViewHolder{
TextView tema, ponente, lugar, fecha, hora;
public EventoViewHolder(View itemView) {
super(itemView);
tema = (TextView) itemView.findViewById(R.id.tema);
ponente = itemView.findViewById(R.id.ponente);
lugar = itemView.findViewById(R.id.Lugar);
fecha = itemView.findViewById(R.id.fecha);
hora = itemView.findViewById(R.id.hora);
}
}
}
POJO.java
public class Eventos {
private int id;
private String tema;
private String ponente;
private String lugar;
private String hora;
private String fecha;
public Eventos(int id, String tema, String ponente, String lugar, String hora, String fecha) {
this.id = id;
this.tema = tema;
this.ponente = ponente;
this.lugar = lugar;
this.hora = hora;
this.fecha = fecha;
}
public int getId() {
return id;
}
public String getTema() {
return tema;
}
public String getPonente() {
return ponente;
}
public String getLugar() {
return lugar;
}
public String getHora() {
return hora;
}
public String getFecha() {
return fecha;
}
}