tengo el siguiente error: Out of memory on a 1048592-byte allocation. Estoy utilizando un recyclerview para mostrar mis imagenes pero error me saca de la aplicación.
El código que indicas en que parte lo debo colocar ya que tengo el siguiente código:
private List<BaseAmigos> listBaseAmigos;
private RecyclerView recyclerView;
private RecyclerView.LayoutManager layoutManager;
private RecyclerView.Adapter adapter;
private RequestQueue requestQueue;
private int requestCount = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_amigos);
MultiDex.install(this);
recyclerView = (RecyclerView) findViewById(R.id.amigos);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
listBaseAmigos = new ArrayList<>();
requestQueue = Volley.newRequestQueue(this);
getData();
recyclerView.addOnScrollListener(rVOnScrollListener);
adapter = new CardAdapterPetFriends (listBaseAmigos, this);
recyclerView.setAdapter(adapter);
private JsonArrayRequest getAmigos(int requestCount) {
final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar1);
progressBar.setVisibility(View.VISIBLE);
setProgressBarIndeterminateVisibility(true);
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Config.DATA_URL_INFO_PETF + String.valueOf(requestCount),
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
parseData(response);
progressBar.setVisibility(View.GONE);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressBar.setVisibility(View.GONE);
Toast.makeText(PetFriends.this, "No hay mas Información", Toast.LENGTH_SHORT).show();
}
});
return jsonArrayRequest;
}
private void getData() {
requestQueue.add(getAmigos(requestCount));
requestCount++;
}
private void parseData(JSONArray array) {
for (int i = 0; i < array.length(); i++)
BaseAmigos baseAmigos = new BaseAmigos();
JSONObject json = null;
try {
json = array.getJSONObject(i);
//Adición de datos al objeto de Base Amigos
baseAmigos.setId(json.getString(Config.TAG_ID_PETF));
baseAmigos.setImagenUrl(json.getString(Config.TAG_IMG_PETF));
baseAmigos.setNombre(json.getString(Config.TAG_PET_FRIENDS));
baseAmigos.setDescrip(json.getString(Config.TAG_DESCR_PETF));
baseAmigos.setTelefono(json.getString(Config.TAG_TEL_PETF));
baseAmigos.setHora(json.getString(Config.TAG_HORARIO_PETF));
baseAmigos.setDireccion(json.getString(Config.TAG_DIR_PETF));
} catch (JSONException e) {
e.printStackTrace();
}
//Añadiendo el objeto de Base Clientes a la lista
listBaseAmigos.add(baseAmigos);
}
//Notificar al adaptador que los datos se han añadido o modificado
adapter.notifyDataSetChanged();
}
//Este método sería comprobar que el desplazamiento recyclerview ha tocado fondo o no
private boolean isLastItemDisplaying(RecyclerView recyclerView) {
if (recyclerView.getAdapter().getItemCount() != 0) {
int lastVisibleItemPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastCompletelyVisibleItemPosition();
if (lastVisibleItemPosition != RecyclerView.NO_POSITION && lastVisibleItemPosition == recyclerView.getAdapter().getItemCount() - 1)
return true;
}
return false;
}
private RecyclerView.OnScrollListener rVOnScrollListener = new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (isLastItemDisplaying(recyclerView)) {
getData();
}
}
};
Agradezco la ayuda que me puedan brindar.
Gracias.