MyActivity.java
package com.tatoado.listviewviewpager2;
import java.util.ArrayList;
import java.util.List;
import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
public class MyActivity extends ActionBarActivity {
String[] ropa = {
"ropfdsfdsfsda1",
"ropa2",
"ropa3",
"ropa4"
};
int[] imagenes = {
R.drawable.tat1,
R.drawable.tat2,
R.drawable.tat3
};
ManejadoraGaleria manejadorGaleria;
ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
//lista
ListView lista = (ListView) findViewById(R.id.listView1);
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, ropa );
lista.setAdapter(adapter);
//galeria de imagenes
manejadorGaleria = new ManejadoraGaleria(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
manejadorGaleria.agregarFragmentos(FragmentosImagenes.newInstance(imagenes[0]));
manejadorGaleria.agregarFragmentos(FragmentosImagenes.newInstance(imagenes[1]));
manejadorGaleria.agregarFragmentos(FragmentosImagenes.newInstance(imagenes[2]));
mViewPager.setAdapter(manejadorGaleria);
}
public class ManejadoraGaleria extends FragmentPagerAdapter {
List<Fragemts> fragmentos;
public ManejadoraGaleria(FragmentManager fm) {
super(fm);
fragmentos = new ArrayList();
}
public void agregarFragmentos(Fragment xfragmento){
fragmentos.add(xfragmento);
}
@Override
public Fragment getItem(int position) {
return fragmentos.get(position);
}
@Override
public int getCount() {
return fragmentos.size();
}
}
public static class FragmentosImagenes extends Fragment {
private static final String ARG_IMAGE = "imagen";
private int imagen;
public static FragmentosImagenes newInstance(int imagen) {
FragmentosImagenes fragment = new FragmentosImagenes();
Bundle args = new Bundle();
args.putInt(ARG_IMAGE, imagen);
fragment.setArguments(args);
fragment.setRetainInstance(true);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(getArguments() != null) {
imagen = getArguments().getInt(ARG_IMAGE);
}
}
public FragmentosImagenes() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_my, container, false);
ImageView imagenView = (ImageView) rootView.findViewById(R.id.imageView1);
imagenView.setImageResource(imagen);
return rootView;
}
}
}
activity_my.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="265dp"
tools:context=".MyActivity" />
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listView1"
android:layout_gravity="center_horizontal" />
</LinearLayout>
fragment.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MyActivity$PlaceholderFragment" android:id="@+id/linear"> <ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/imageView1" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> </RelativeLayout>
Amigo, hay manera de hacer que las imagenes se muevan automaticamente ?
ResponderEliminarHola capo, sabes que nunca se me ha ocurrido hacer automaticamente, se me ocurre rápidamente utilizar un temporizador, pero no sabría como hacerlo. Lo debería pensar un poco más. Tengo un vista un tuto que maneja el tiempo del celular y tengo el código un libro.. se llama "programación avanzada para android".
EliminarAhora en vacaciones lo pienso y veo si se hago algo.
hola ramiro utilice el código y esta muy bueno pero al utilizar dentro de un Navigation Drawer se me borra la segunda imagen alguna idea de que puedo estar haciendo mal
ResponderEliminarsaludos
tal vez te ha pasado lo mismo que a mi, se borra la segunda imagen.. pero después cuando pasas a la cuarta y volves a la segunda si aparece??.. si es así, es problema de Android Studio, si la respuesta es no, fijate si llamando justamente a esa imagen, o si los tamaños son los correctos.
EliminarProbandolo en nuevo proyecto sin el navitaion drawer, y funcionaba bien.
En conclusión le saque el navigation drawer
Espero que te haya servido la respuesta.
Gracias por responder Ramiro.... si me ocurre el mismo error que ti ... se podría solucionar o implementar algo que se asemeje y poder trabajar con navigation drawer
Eliminaragradeceria mucho tu ayuda
Ramiro, me gustaría utilizar el código pero en una clase extendida de fragment, todo va bien pero cuanto instancio la clase "manejadorGaleria = new ManejadoraGaleria(getSupportFragmentManager());" obtengo un error en el método -getSupportFragmentManager()); - Me gustaría saber como solucionarlo
ResponderEliminarHola Ramiro, quisiera ver si se puede remplazar las imágenes como botones, mi objetivo es hacer una calculadora como la que trae android lollipop con un teclado desplegable (Swipe) de derecha a izquierda. Gracias
ResponderEliminarComo estas. Mira a eso no lo he hecho, pero te digo como encararlo.
EliminarMiraría http://cursoandroidstudio.blogspot.com.ar/2014/07/navigation-drawer-menu-lateral.html para entender como funciona
En el activity_main esta la cajonera que se mueve de izquierda a la derecha..
Como vos lo queres al revés, entonces lo cambiaría de lugar y vería que pasa.
Avisame si tuviste resultados.
Hola Ramiro, quisiera saber si hay una forma de hacer que cada pager tenga una manera de utilizar un clicklistener para que me lleve a distintas actividades que tengo creada. Gracias por los tutoriales!
ResponderEliminarSi, si se puede. Mira justamente hice algo así, acá esta el trozo de código que necesitas
Eliminarhttp://pastebin.com/eB76wfzk
Lo que me acabas de decir, es una buena idea para un tutorial. No he visto nada como eso, y yo lo saque de intruso, probando.
EliminarGracias por responder! Yo hice algo asi parecido (http://pastebin.com/u8ELZt7Y) tambien (utilizando su tutorial para hacer el ViewPager) pero yo tengo 3 imagenes en las que quiero que cada uno, independiente , vayan a sus respectivas actividades cada vez que sean seleccionadas.
EliminarSi, lo deberias hacer porque hay muy pocas partes donde explican como implementarlo y mas en un Fragmento.
Saludos!
Le encontre la solución a mi problema. Tienes que poner un switch dentro del onClick que esta en el metodo del onCreateView. Si necesitas mostrarte como lo hice, me avisas.
EliminarPodrías subirlo?
EliminarWi Lo Seria bueno que lo mostraras.
ResponderEliminarEjemplo: http://cursoandroidstudio.blogspot.com.ar/2015/05/proyecto-turismo.html
Eliminar¿Cómo puedo implementar esto con una clase extendida de Fragment?
ResponderEliminarHola Amigo FElicidades!
ResponderEliminarSolo una pregunta, como puedo obtener el nombre o la posicion del list de la imagen que se está mostrando? necesito esos datos para almacenarlos en uns BD
Hola capo, perdon por la tardanza.
EliminarAcá hay un ejemplo http://cursoandroidstudio.blogspot.com.ar/2015/05/proyecto-turismo.html
En este tengo un viewpager que dependiendo el que clickee me envía un listView en particular.
Saludos.
Hola, soy novato en esto, muchísimas gracias por el excelente tutorial, me he descargado el archivo ZIP, y al abrirlo con android studio (ultima versión) me da este error:
ResponderEliminarhttps://www.dropbox.com/s/lu64zk9fl98ukas/Error%20Android%20Studio.JPG?dl=0
¿que puede estar pasando?, ¿tengo algún problema con el Gradle?
Tenes que actualizarlo "Apply gradle plugin"
Eliminarsino en tu proyecto nuevo copia y pega código.
Has una muy buena pregunta, a mi me pasa de vez en cuando.
Cuando me vuelva a pasar subo un tuto.
gracias por responder, copiando y pegando el código no me funciona y si le doy a Apply gradle plugin me sale es:
Eliminarhttps://www.dropbox.com/s/fam13m5pcy6vwo3/Error%20Android%20Studio2.JPG?dl=0
siento ser tan pesao, estoy aprendiendo y es dificil
Me tira este error:
ResponderEliminar06-03 05:29:35.912 1934-1934/com.maya.esoj.listaviewpager I/art﹕ Not late-enabling -Xcheck:jni (already on)
06-03 05:29:40.252 1934-1934/com.maya.esoj.listaviewpager D/AndroidRuntime﹕ Shutting down VM
--------- beginning of crash
06-03 05:29:40.260 1934-1934/com.maya.esoj.listaviewpager E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.maya.esoj.listaviewpager, PID: 1934
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.maya.esoj.listaviewpager/com.maya.esoj.listaviewpager.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
at com.maya.esoj.listaviewpager.MainActivity.onCreate(MainActivity.java:45)
at android.app.Activity.performCreate(Activity.java:5937)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
06-03 00:29:45.716 1934-1934/com.maya.esoj.listaviewpager I/Process﹕ Sending signal. PID: 1934 SIG: 9
Amigo de lujo tu tuto!
ResponderEliminarSolo tengo una pregunta, ¿Como puedo hacer para que me salga sin el ActionBar, es decir en fullscreen?
Así getSupportActionBar().hide();
Eliminaro así en style
android:theme="@android:style/Theme.Holo.Light.NoActionBar"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
Gracias amigo, lo intente con android:theme y si, oculta el ActionBar, luce mejor pero habrá algo para hacerlo completamente fullscreen? son ActionBar y StatusBar?
EliminarHola una apregunta, como se puede hacer para que el Swipe se de forma Vertical? :)
ResponderEliminarSaludos, excelente tutorial!
Hola me gustaria saber como hacer para cargar imagenes desde el servidor en el vector int imagenes para crear el ViewPager + ListView desde base datos
ResponderEliminarHola, quería que ademas de las imágenes, el texto de abajo también se deslice, es posible? que debería cambiar del código? gracias!
ResponderEliminarGood Info. Thanks For Sharing. check it All Android FRP Unlock Solution
ResponderEliminarGracias por los tutoriales, pero ayúdame en algo sumamente importante, ¿Cómo le doy acciones al ViewPager? Ej. quiero que en el slide 1 me lleve a otro activity
ResponderEliminar