Error trying to send data from one activity to another with intent in android

0

I'm trying to send the name, id and url of an api of images from one activity to another on android and it does not work.

Code

   @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    //Mostrar los items en forma de grilla
            recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
            listaPokemonAdapter = new ListaPokemonAdapter(this);
            recyclerView.setAdapter(listaPokemonAdapter);
            recyclerView.setHasFixedSize(true);
            final GridLayoutManager layoutManager = new GridLayoutManager(this, 2);//Grilla en 2 columnas
            recyclerView.setLayoutManager(layoutManager);//Asignacion al recyclerView

        //Detectar o escuhar un movimiento de scroll
        //Detectando si el sroll es asi abjao y llegó al final
        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);

                if (dy > 0) {
                    int visibleItemCount = layoutManager.getChildCount();
                    int totalItemCount = layoutManager.getItemCount();
                    int pastVisibleItems = layoutManager.findFirstVisibleItemPosition();

                    if (aptoParaCargar) {
                        if ((visibleItemCount + pastVisibleItems) >= totalItemCount) {
                            Log.i(TAG, " Llegamos al final.");

                            aptoParaCargar = false;
                            offset += 20;
                            obtenerDatos(offset);
                        }
                    }
                }
            }
        });




        retrofit = new Retrofit.Builder()//Acceso desde la clase
                .baseUrl("http://pokeapi.co/api/v2/")//Url base


                .addConverterFactory(GsonConverterFactory.create())//Formateo de respuestas
                .build();
        aptoParaCargar = true;
        offset = 0;
        obtenerDatos(offset);//Método para obtener los datos

    }

    public void obtenerDatos(int offset) {
        PokemonApiServicio service = retrofit.create(PokemonApiServicio.class);//Obtener datos de la interfaz
        Call<PokemonRespuesta> pokemonRespuestaCall = service.obtenerListaPokemon(20, offset);//Va de 20 en 20 mostrando
        pokemonRespuestaCall.enqueue(new Callback<PokemonRespuesta>() {//Manejar los resultados en sus procesos internos
            @Override
            public void onResponse(Call<PokemonRespuesta> call, Response<PokemonRespuesta> response) {//Cuando llega la respuesta
                aptoParaCargar = true;
                if (response.isSuccessful()) {//Si existe una respuesta

                    PokemonRespuesta pokemonRespuesta = response.body();
                    //Verificación por consola
                    final ArrayList<Pokemon> listaPokemon=pokemonRespuesta.getResults();
                    //Se envía los datos al adaptador para mostrarlo graficamente

                    listaPokemonAdapter.adicionarListaPokemon(listaPokemon);

//Mandadndo datos a otra actividad
                    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                            listaPokemon selectPokemon = listaPokemon.get(position);

                            Intent intent = new Intent(getApplicationContext(), ActividadDetalle.class);
                            intent.putExtra("nombre", selectPokemon.getName());
                            intent.putExtra("Id", selectPokemon.getNumber());
                           // intent.putExtra("Url", selectPokemon.getUrl());
                            startActivity(intent);
                        }
                    });


                    for(int i=0; i<listaPokemon.size();i++){
                        final Pokemon p=listaPokemon.get(i);
                        Log.i(TAG,"Pokemon:"+p.getName()+" "+ p.getNumber());
                       // Log.i(TAG,"Pokemon #:"+p.getNumber());
                       // Log.i(TAG,"Pokemon #:"+p.getUrl());


                    }
//Fin verificación por consola


                } else {//Sino existe respuesta
                    Log.e(TAG, " onResponse: " + response.errorBody());
                }


        }
            @Override
            public void onFailure(Call<PokemonRespuesta> call, Throwable t) {//Cuando hay algún error
                aptoParaCargar = true;
                Log.e(TAG, " onFailure: " + t.getMessage());//Muestra si existe algún error

            }
        });
    }

    }
    
asked by Mateosth 27.10.2017 в 20:33
source

1 answer

0
listaPokemon selectPokemon = listaPokemon.get(position);
  // Enviar Datos
Intent intent = new Intent(getApplicationContext(), ActividadDetalle.class);

/*      Prueba  este bloque  */
intent.putExtra("name", listaPokemon.getName()); 
intent.putExtra("number", listaPokemon.getNumber());      
intent.putExtra("Url", listaPokemon.getUrl());         
///////////////////////////////////////////////
/*  o esto          segun tu adapter                */
intent.putExtra("name", listaPokemon.get(position).getName()); 
intent.putExtra("number", listaPokemon.get(position).getNumber());
intent.putExtra("Url", listaPokemon.get(position).getUrl());
///////////////////////////////////////////////////
startActivity(intent);


// recibir datos 
Bundle datos = this.getIntent().getExtras();
String name  = datos.getString("name");
String  numero= datos.getString("number");
String url =  datos.getString("url");
    
answered by 26.11.2017 в 20:43