I am working with JsonArrayRequest to be able to recover data from a webservice but it gives me an error when executing, this is the error that it gives me:
Error: (62, 45) error: not suitable constructor found for JsonArrayRequest (int, String, >) constructor JsonArrayRequest.JsonArrayRequest (String, Listener, ErrorListener) is not applicable (current and formal argument lists differ in length) builder JsonArrayRequest.JsonArrayRequest (int, String, JSONArray, Listener, ErrorListener) is not applicable (current and formal argument lists differ in length)
Here is the class where I implemented the JsonArrayRequest:
package com.example.enriq.examen_tareas_segundo_plano_enrique_espinosa;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
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.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import com.example.enriq.examen_tareas_segundo_plano_enrique_espinosa.adapter.Usuario;
import com.example.enriq.examen_tareas_segundo_plano_enrique_espinosa.adapter.UsuarioAdapter;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
/**
* Created by Enriq on 26/04/2018.
*/
public class asignaturaFragmento extends Fragment {
private String url = "http://192.168.1.70:8080/WebService/webapi/usuarios";
private ArrayList<Usuario> usuarios = new ArrayList<>();
public asignaturaFragmento() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.activity_prueba, container, false);
RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler_list);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2,
GridLayoutManager.VERTICAL, false));
final UsuarioAdapter adapter = new UsuarioAdapter(getActivity(), usuarios);
recyclerView.setAdapter(adapter);
RequestQueue queue = Volley.newRequestQueue(getActivity());
final ProgressDialog dialog = new ProgressDialog(getActivity());
dialog.setMessage("Por favor espere...");
dialog.show();
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
deserializarJSONArray(response);
adapter.notifyDataSetChanged();
if (dialog.isShowing()) dialog.dismiss();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getContext(), "Error al realizar la petición \n" + error.getMessage(), Toast.LENGTH_SHORT).show();
if (dialog.isShowing()) dialog.dismiss();
}
});
queue.add(jsonArrayRequest);
return view;
}
public void deserializarJSONArray(JSONArray jsonArray) {
for (int i = 0; i < jsonArray.length(); i++) {
try {
JSONObject item = jsonArray.getJSONObject(i);
Usuario tarea = new Usuario();
tarea.setId(item.getString("id"));
tarea.setContrasena(item.getString("contrasena"));
tarea.setNombreUsuario(item.getString("nombreUsuario"));
usuarios.add(tarea);
} catch (JSONException e) {
Toast.makeText(getContext(), "Error al procesar la respuesta de la petición tarea",
Toast.LENGTH_SHORT).show();
}
}
}
}
This is my adder class to get the values of the Json:
package com.example.enriq.examen_tareas_segundo_plano_enrique_espinosa.adapter;
import android.app.Activity;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.enriq.examen_tareas_segundo_plano_enrique_espinosa.R;
import java.util.ArrayList;
/**
* Created by Next University.
*/
public class UsuarioAdapter extends RecyclerView.Adapter<UsuarioAdapter.UsuarioHolder>{
private Activity activity;
private ArrayList<Usuario> usuarios;
public UsuarioAdapter(Activity activity, ArrayList<Usuario> usuarios) {
this.activity = activity;
this.usuarios = usuarios;
}
protected class UsuarioHolder extends RecyclerView.ViewHolder {
protected TextView txtId, txtNombreUsuario, txtContrasena;
public UsuarioHolder(View itemView) {
super(itemView);
txtId = (TextView) itemView.findViewById(R.id.txt_id);
txtNombreUsuario = (TextView) itemView.findViewById(R.id.txt_nombre_usuario);
txtContrasena = (TextView) itemView.findViewById(R.id.txt_contrasena);
}
}
@Override
public UsuarioHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = activity.getLayoutInflater().inflate(R.layout.plantilla_usuario, parent, false);
UsuarioHolder holder = new UsuarioHolder(view);
return holder;
}
@Override
public void onBindViewHolder(UsuarioHolder holder, int position) {
holder.txtId.setText(usuarios.get(position).getId());
holder.txtNombreUsuario.setText(usuarios.get(position).getNombreUsuario());
holder.txtContrasena.setText(usuarios.get(position).getContrasena());
}
@Override
public int getItemCount() {
return usuarios.size();
}
}
It does not show me the error in the class, only when I run my application I get the error.