Re: [gtug-bsas] Duda Android Ajax GridView
lunes, 23 de junio de 2014
Pablo, vos también largá el post :)
On Mon, 23 Jun 2014 10:10:46 -0700
Pablo Moyano <ultraklon@gmail.com> wrote:
> Yo propongo que Maxi escriba un post por cada problema que la comunidad le
> viene solucionando
>
>
> El 23 de junio de 2014, 9:59, Maximiliano Burgos<maxib2007@gmail.com>
> escribió:
>
> > Funciono Gente!
> > Directamente me lleve todo a la llamada asincrona, no se si esta muy bien,
> > les dejo el code:
> >
> > protected void onPostExecute(String response) {
> > try {
> > img = new JSONArray(response);
> > gridView = (GridView) findViewById(R.id.gridView);
> > customGridAdapter = new GridViewAdapter(MainActivity.this,
> > R.layout.row_grid, getData(img));
> > gridView.setAdapter(customGridAdapter);
> >
> > gridView.setOnItemClickListener(new OnItemClickListener() {
> > public void onItemClick(AdapterView<?> parent, View v,
> > int position, long id) {
> > Toast.makeText(MainActivity.this, position + "#Selected",
> > Toast.LENGTH_SHORT).show();
> > }
> >
> > });
> > } catch (JSONException e) {
> > e.printStackTrace();
> > }
> > }
> >
> >
> > El 23 de junio de 2014, 13:49, Maximiliano Burgos <maxib2007@gmail.com>
> > escribió:
> >
> > Entiendo! Ahora pruebo a ver si funciona y les digo!
> >>
> >>
> >> El 23 de junio de 2014, 13:48, Agustin Vazquez <aguss.vazquez@gmail.com>
> >> escribió:
> >>
> >> Maxi como estas? Es como dice Marina, tenes que poner el setAdapter
> >>> despues de tener la informacion, es decir, en el PostExecute.
> >>>
> >>> A modo de informacion, si lo hicieras al comienzo, tenes que avisarle al
> >>> adaptador de que la data cambio, eso se hace con
> >>> adapter.notifyDatasetChanged();
> >>>
> >>> Abrazo
> >>>
> >>>
> >>> La información incluida en este e-mail es CONFIDENCIAL, siendo para uso
> >>> exclusivo del destinatario arriba mencionado. Si Usted lee este mensaje y
> >>> no es el destinatario indicado, le informamos que está totalmente prohibida
> >>> cualquier utilización, divulgación, distribución y/o reproducción de esta
> >>> comunicación sin autorización expresa en virtud de la legislación vigente.
> >>> Si ha recibido este mensaje por error, le rogamos nos lo notifique
> >>> inmediatamente por esta misma vía y proceda a su eliminación.
> >>>
> >>>
> >>> El 23 de junio de 2014, 12:19, Marina Cuello <marina.eariel@gmail.com>
> >>> escribió:
> >>>
> >>> El problema es que el execute no es sincrónico (esa es la belleza de los
> >>>> AsyncTask), es decir, lo más probable es que para cuando llames al
> >>>> setAdapter, tu customGridAdapter sea un null muy null (y me sorprende que
> >>>> no crashee) o una cáscara vacía (que explicaría el hecho de que no haga
> >>>> nada). Probá (aunque es mala práctica) meter el gridView.setAdapter dentro
> >>>> del onPostExecute, justo después de generar el customGridAdapter y quizás
> >>>> notes un cambio. Quizás.
> >>>>
> >>>> Marina
> >>>>
> >>>>
> >>>> 2014-06-23 12:14 GMT-03:00 Maximiliano Burgos <maxib2007@gmail.com>:
> >>>>
> >>>> 1. Lo hago despues del obtainImg:
> >>>>> new obtainImg().execute(url);
> >>>>> gridView.setAdapter(customGridAdapter);
> >>>>>
> >>>>> 5. Gracias por la data, en un rato me la pongo a investigar :D
> >>>>>
> >>>>> 6. No pense que esto de las grids tuviera tantas maneras! Ahora voy a
> >>>>> ver como se maneja eso.
> >>>>>
> >>>>>
> >>>>> El 23 de junio de 2014, 12:02, Marina Cuello <marina.eariel@gmail.com>
> >>>>> escribió:
> >>>>>
> >>>>>> 1. Me refiero a... ¿dónde hacés
> >>>>>> "gridView.setAdapter(customGridAdapter);"?
> >>>>>>
> >>>>>> 5. Son dos library. Picasso es de Square es específica para manejo de
> >>>>>> imágenes online (http://square.github.io/picasso/). Volley es de
> >>>>>> Google y es multiuso. No es tan sencillo encontrar un link lindo, porque
> >>>>>> Google no es tan prolijo como Square :P pero el source anda por acá (
> >>>>>> https://android.googlesource.com/platform/frameworks/volley/) y esta
> >>>>>> respuesta de StackOverflow ayuda apenas (
> >>>>>> http://stackoverflow.com/a/16721116/671431). Otra opción es
> >>>>>> Universal Image Loader (
> >>>>>> https://github.com/nostra13/Android-Universal-Image-Loader) pero no
> >>>>>> la usé nunca. Con cualquiera de las tres, hay maneras diferentes de cargar
> >>>>>> una ImageView con una imagen, una vez que tenés su URL, pero básicamente
> >>>>>> las libraries se encargan de bajarla, hacer el caché, y cortar la descarga
> >>>>>> si no la necesitás más. De todas hay muchos ejemplos por ahí.
> >>>>>>
> >>>>>> 6. Con esos dos XML, podés cargar tu GridView con tus rows de al
> >>>>>> menos tres maneras diferentes :P Las que te menciono son dos técnicas (o
> >>>>>> dos maneras de encarar una técnica) para mejorar la performance de
> >>>>>> ListViews y GridViews. Google es tu amigo :P
> >>>>>>
> >>>>>> Marina
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> 2014-06-23 11:13 GMT-03:00 Maximiliano Burgos <maxib2007@gmail.com>:
> >>>>>>
> >>>>>> 1. El GridViewAdapter lo creo dentro de la funcion obtainImg() y se
> >>>>>>> lo asigno en el OnCreate(). Osea, seria:
> >>>>>>> protected void onCreate(Bundle savedInstanceState) {
> >>>>>>> gridView = (GridView) findViewById(R.id.gridView);
> >>>>>>> new obtainImg().execute(url);
> >>>>>>>
> >>>>>>> Dentro de obtainImg:
> >>>>>>> protected void onPostExecute(String response) {
> >>>>>>> try {
> >>>>>>> img = new JSONArray(response);
> >>>>>>> customGridAdapter = new GridViewAdapter(MainActivity.this,
> >>>>>>> R.layout.row_grid, getData(img));
> >>>>>>> } catch (JSONException e) {
> >>>>>>> e.printStackTrace();
> >>>>>>> }
> >>>>>>> }
> >>>>>>>
> >>>>>>> 2. Esto viene de un ejemplo que estaba funcional. Lo que hace es
> >>>>>>> tomar unas imagenes que tiene guardada localmente y mostrarlas. Lo que hace
> >>>>>>> getData es eso. El funcionamiento no esta modificado, el parametro que le
> >>>>>>> paso no hace nada todavia. Solo lo deje para testear si dentro de mi
> >>>>>>> funcion de obtainImg sigue funcionando, y me doy cuenta que no.
> >>>>>>>
> >>>>>>> 3. Como dije arriba, getData contiene un proceso de adquirir las
> >>>>>>> imagenes locales y mostrarlas en la grid. Actualmente la API solo consulta
> >>>>>>> datos, pero no hace nada mas, no afecta a getData.
> >>>>>>>
> >>>>>>> 4. Creo que es mas facil mostrarte la funcion de getData:
> >>>>>>>
> >>>>>>> private ArrayList<ImageItem> getData(JSONArray img) {
> >>>>>>> final ArrayList<ImageItem> imageItems = new ArrayList<ImageItem>();
> >>>>>>> // retrieve String drawable array
> >>>>>>> TypedArray imgs = getResources().obtainTypedArray(R.array.image_ids);
> >>>>>>> for (int i = 0; i < imgs.length(); i++) {
> >>>>>>> Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),
> >>>>>>> imgs.getResourceId(i, -1));
> >>>>>>> imageItems.add(new ImageItem(bitmap, "Image#" + i));
> >>>>>>> }
> >>>>>>>
> >>>>>>> return imageItems;
> >>>>>>> }
> >>>>>>>
> >>>>>>> 5. Que vienen a ser esas herramientas? Yo tengo que traermelas de mi
> >>>>>>> api si o si, eso lo afectaria?
> >>>>>>> 6. Lo tome de un ejemplo y lo estoy adaptando, mi grid xml tiene 2
> >>>>>>> archivos:
> >>>>>>>
> >>>>>>> Un main contenedor:
> >>>>>>> <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"
> >>>>>>> android:background="#f0f0f0"
> >>>>>>> tools:context=".MainActivity" >
> >>>>>>>
> >>>>>>> <GridView
> >>>>>>> android:id="@+id/gridView"
> >>>>>>> android:layout_width="fill_parent"
> >>>>>>> android:layout_height="wrap_content"
> >>>>>>> android:layout_margin="5dp"
> >>>>>>> android:columnWidth="100dp"
> >>>>>>> android:gravity="center"
> >>>>>>> android:numColumns="auto_fit"
> >>>>>>> android:verticalSpacing="5dp"
> >>>>>>> android:drawSelectorOnTop="true"
> >>>>>>> android:stretchMode="columnWidth" >
> >>>>>>> </GridView>
> >>>>>>>
> >>>>>>> </RelativeLayout>
> >>>>>>>
> >>>>>>> Y un row_grid para contener cada imagen y descripcion:
> >>>>>>> <LinearLayout xmlns:android="
> >>>>>>> http://schemas.android.com/apk/res/android"
> >>>>>>> xmlns:tools="http://schemas.android.com/tools"
> >>>>>>> android:layout_width="wrap_content"
> >>>>>>> android:layout_height="wrap_content"
> >>>>>>> android:layout_marginTop="5dp"
> >>>>>>> android:orientation="vertical"
> >>>>>>> android:padding="5dp"
> >>>>>>> android:clickable="false"
> >>>>>>> android:background="@drawable/grid_color_selector"
> >>>>>>> android:focusable="false"
> >>>>>>> android:focusableInTouchMode="false">
> >>>>>>>
> >>>>>>> <ImageView
> >>>>>>> android:id="@+id/image"
> >>>>>>> android:layout_width="100dp"
> >>>>>>> android:layout_height="100dp" >
> >>>>>>> </ImageView>
> >>>>>>>
> >>>>>>> <TextView
> >>>>>>> android:id="@+id/text"
> >>>>>>> android:layout_width="fill_parent"
> >>>>>>> android:layout_height="wrap_content"
> >>>>>>> android:layout_marginTop="5dp"
> >>>>>>> android:gravity="center"
> >>>>>>> android:textSize="12sp" >
> >>>>>>> </TextView>
> >>>>>>>
> >>>>>>> </LinearLayout>
> >>>>>>>
> >>>>>>>
> >>>>>>> El 23 de junio de 2014, 11:00, Marina Cuello <
> >>>>>>> marina.eariel@gmail.com> escribió:
> >>>>>>>
> >>>>>>> Mmmm...
> >>>>>>>> 1. ¿Dónde le asignás el adapter a tu GridView? (seguro está fuera
> >>>>>>>> del código que pegás, pero es un olvido común, creeme).
> >>>>>>>> 2. ¿Todo el proceso en getData (which doesn't get many data
> >>>>>>>> anyway), es para generar Bitmaps y después esos bitmaps los usás en la
> >>>>>>>> GridView?
> >>>>>>>> 3. ¿Qué tiene que ver getData() con lo que te trae tu API? No veo
> >>>>>>>> que estés usando el parámetro ese.
> >>>>>>>> 4. ¿Por alguna razón no usás los id que obtenés del array
> >>>>>>>> directamente en tus ImageView o lo que sea que tengas dentro?
> >>>>>>>> 5. Si en realidad pegaste un getData desactualizado o le erraste de
> >>>>>>>> alguna otra manera y en realidad querés usar imágenes online, te
> >>>>>>>> recomendaría usar Picasso o Volley para manejar todo eso.
> >>>>>>>> 6. Como no veo qué tiene tu adapter, te recomiendo a ciegas que
> >>>>>>>> busques info sobre los patrones View Holder y Holder View (mismo concepto,
> >>>>>>>> dos implementaciones, lo que vos hacés parece así visto desde arriba
> >>>>>>>> bastante parecido a Holder View pero me parece que estás usando demasiados
> >>>>>>>> recursos de una y al cuete, generando todos los items de tu Grid antes de
> >>>>>>>> empezar).
> >>>>>>>>
> >>>>>>>> Marina
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> --
> >>>>>> Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos
> >>>>>> Aires | Google Developers Group" de Grupos de Google.
> >>>>>> Para anular la suscripción a este grupo y dejar de recibir sus
> >>>>>> mensajes, envía un correo electrónico a
> >>>>>> gtug-bsas+unsubscribe@googlegroups.com.
> >>>>>> Para acceder a más opciones, visita
> >>>>>> https://groups.google.com/d/optout.
> >>>>>>
> >>>>>
> >>>>> --
> >>>>> Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos
> >>>>> Aires | Google Developers Group" de Grupos de Google.
> >>>>> Para anular la suscripción a este grupo y dejar de recibir sus
> >>>>> mensajes, envía un correo electrónico a
> >>>>> gtug-bsas+unsubscribe@googlegroups.com.
> >>>>> Para acceder a más opciones, visita https://groups.google.com/d/optout
> >>>>> .
> >>>>>
> >>>>
> >>>> --
> >>>> Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos
> >>>> Aires | Google Developers Group" de Grupos de Google.
> >>>> Para anular la suscripción a este grupo y dejar de recibir sus
> >>>> mensajes, envía un correo electrónico a
> >>>> gtug-bsas+unsubscribe@googlegroups.com.
> >>>> Para acceder a más opciones, visita https://groups.google.com/d/optout.
> >>>>
> >>>
> >>> --
> >>> Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos
> >>> Aires | Google Developers Group" de Grupos de Google.
> >>> Para anular la suscripción a este grupo y dejar de recibir sus mensajes,
> >>> envía un correo electrónico a gtug-bsas+unsubscribe@googlegroups.com.
> >>> Para acceder a más opciones, visita https://groups.google.com/d/optout.
> >>>
> >>
> >>
> > --
> > Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos
> > Aires | Google Developers Group" de Grupos de Google.
> > Para anular la suscripción a este grupo y dejar de recibir sus mensajes,
> > envía un correo electrónico a gtug-bsas+unsubscribe@googlegroups.com.
> > Para acceder a más opciones, visita https://groups.google.com/d/optout.
> >
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos Aires | Google Developers Group" de Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a gtug-bsas+unsubscribe@googlegroups.com.
> Para obtener más opciones, visita https://groups.google.com/d/optout.
--
Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos Aires | Google Developers Group" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a gtug-bsas+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.
On Mon, 23 Jun 2014 10:10:46 -0700
Pablo Moyano <ultraklon@gmail.com> wrote:
> Yo propongo que Maxi escriba un post por cada problema que la comunidad le
> viene solucionando
>
>
> El 23 de junio de 2014, 9:59, Maximiliano Burgos<maxib2007@gmail.com>
> escribió:
>
> > Funciono Gente!
> > Directamente me lleve todo a la llamada asincrona, no se si esta muy bien,
> > les dejo el code:
> >
> > protected void onPostExecute(String response) {
> > try {
> > img = new JSONArray(response);
> > gridView = (GridView) findViewById(R.id.gridView);
> > customGridAdapter = new GridViewAdapter(MainActivity.this,
> > R.layout.row_grid, getData(img));
> > gridView.setAdapter(customGridAdapter);
> >
> > gridView.setOnItemClickListener(new OnItemClickListener() {
> > public void onItemClick(AdapterView<?> parent, View v,
> > int position, long id) {
> > Toast.makeText(MainActivity.this, position + "#Selected",
> > Toast.LENGTH_SHORT).show();
> > }
> >
> > });
> > } catch (JSONException e) {
> > e.printStackTrace();
> > }
> > }
> >
> >
> > El 23 de junio de 2014, 13:49, Maximiliano Burgos <maxib2007@gmail.com>
> > escribió:
> >
> > Entiendo! Ahora pruebo a ver si funciona y les digo!
> >>
> >>
> >> El 23 de junio de 2014, 13:48, Agustin Vazquez <aguss.vazquez@gmail.com>
> >> escribió:
> >>
> >> Maxi como estas? Es como dice Marina, tenes que poner el setAdapter
> >>> despues de tener la informacion, es decir, en el PostExecute.
> >>>
> >>> A modo de informacion, si lo hicieras al comienzo, tenes que avisarle al
> >>> adaptador de que la data cambio, eso se hace con
> >>> adapter.notifyDatasetChanged();
> >>>
> >>> Abrazo
> >>>
> >>>
> >>> La información incluida en este e-mail es CONFIDENCIAL, siendo para uso
> >>> exclusivo del destinatario arriba mencionado. Si Usted lee este mensaje y
> >>> no es el destinatario indicado, le informamos que está totalmente prohibida
> >>> cualquier utilización, divulgación, distribución y/o reproducción de esta
> >>> comunicación sin autorización expresa en virtud de la legislación vigente.
> >>> Si ha recibido este mensaje por error, le rogamos nos lo notifique
> >>> inmediatamente por esta misma vía y proceda a su eliminación.
> >>>
> >>>
> >>> El 23 de junio de 2014, 12:19, Marina Cuello <marina.eariel@gmail.com>
> >>> escribió:
> >>>
> >>> El problema es que el execute no es sincrónico (esa es la belleza de los
> >>>> AsyncTask), es decir, lo más probable es que para cuando llames al
> >>>> setAdapter, tu customGridAdapter sea un null muy null (y me sorprende que
> >>>> no crashee) o una cáscara vacía (que explicaría el hecho de que no haga
> >>>> nada). Probá (aunque es mala práctica) meter el gridView.setAdapter dentro
> >>>> del onPostExecute, justo después de generar el customGridAdapter y quizás
> >>>> notes un cambio. Quizás.
> >>>>
> >>>> Marina
> >>>>
> >>>>
> >>>> 2014-06-23 12:14 GMT-03:00 Maximiliano Burgos <maxib2007@gmail.com>:
> >>>>
> >>>> 1. Lo hago despues del obtainImg:
> >>>>> new obtainImg().execute(url);
> >>>>> gridView.setAdapter(customGridAdapter);
> >>>>>
> >>>>> 5. Gracias por la data, en un rato me la pongo a investigar :D
> >>>>>
> >>>>> 6. No pense que esto de las grids tuviera tantas maneras! Ahora voy a
> >>>>> ver como se maneja eso.
> >>>>>
> >>>>>
> >>>>> El 23 de junio de 2014, 12:02, Marina Cuello <marina.eariel@gmail.com>
> >>>>> escribió:
> >>>>>
> >>>>>> 1. Me refiero a... ¿dónde hacés
> >>>>>> "gridView.setAdapter(customGridAdapter);"?
> >>>>>>
> >>>>>> 5. Son dos library. Picasso es de Square es específica para manejo de
> >>>>>> imágenes online (http://square.github.io/picasso/). Volley es de
> >>>>>> Google y es multiuso. No es tan sencillo encontrar un link lindo, porque
> >>>>>> Google no es tan prolijo como Square :P pero el source anda por acá (
> >>>>>> https://android.googlesource.com/platform/frameworks/volley/) y esta
> >>>>>> respuesta de StackOverflow ayuda apenas (
> >>>>>> http://stackoverflow.com/a/16721116/671431). Otra opción es
> >>>>>> Universal Image Loader (
> >>>>>> https://github.com/nostra13/Android-Universal-Image-Loader) pero no
> >>>>>> la usé nunca. Con cualquiera de las tres, hay maneras diferentes de cargar
> >>>>>> una ImageView con una imagen, una vez que tenés su URL, pero básicamente
> >>>>>> las libraries se encargan de bajarla, hacer el caché, y cortar la descarga
> >>>>>> si no la necesitás más. De todas hay muchos ejemplos por ahí.
> >>>>>>
> >>>>>> 6. Con esos dos XML, podés cargar tu GridView con tus rows de al
> >>>>>> menos tres maneras diferentes :P Las que te menciono son dos técnicas (o
> >>>>>> dos maneras de encarar una técnica) para mejorar la performance de
> >>>>>> ListViews y GridViews. Google es tu amigo :P
> >>>>>>
> >>>>>> Marina
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> 2014-06-23 11:13 GMT-03:00 Maximiliano Burgos <maxib2007@gmail.com>:
> >>>>>>
> >>>>>> 1. El GridViewAdapter lo creo dentro de la funcion obtainImg() y se
> >>>>>>> lo asigno en el OnCreate(). Osea, seria:
> >>>>>>> protected void onCreate(Bundle savedInstanceState) {
> >>>>>>> gridView = (GridView) findViewById(R.id.gridView);
> >>>>>>> new obtainImg().execute(url);
> >>>>>>>
> >>>>>>> Dentro de obtainImg:
> >>>>>>> protected void onPostExecute(String response) {
> >>>>>>> try {
> >>>>>>> img = new JSONArray(response);
> >>>>>>> customGridAdapter = new GridViewAdapter(MainActivity.this,
> >>>>>>> R.layout.row_grid, getData(img));
> >>>>>>> } catch (JSONException e) {
> >>>>>>> e.printStackTrace();
> >>>>>>> }
> >>>>>>> }
> >>>>>>>
> >>>>>>> 2. Esto viene de un ejemplo que estaba funcional. Lo que hace es
> >>>>>>> tomar unas imagenes que tiene guardada localmente y mostrarlas. Lo que hace
> >>>>>>> getData es eso. El funcionamiento no esta modificado, el parametro que le
> >>>>>>> paso no hace nada todavia. Solo lo deje para testear si dentro de mi
> >>>>>>> funcion de obtainImg sigue funcionando, y me doy cuenta que no.
> >>>>>>>
> >>>>>>> 3. Como dije arriba, getData contiene un proceso de adquirir las
> >>>>>>> imagenes locales y mostrarlas en la grid. Actualmente la API solo consulta
> >>>>>>> datos, pero no hace nada mas, no afecta a getData.
> >>>>>>>
> >>>>>>> 4. Creo que es mas facil mostrarte la funcion de getData:
> >>>>>>>
> >>>>>>> private ArrayList<ImageItem> getData(JSONArray img) {
> >>>>>>> final ArrayList<ImageItem> imageItems = new ArrayList<ImageItem>();
> >>>>>>> // retrieve String drawable array
> >>>>>>> TypedArray imgs = getResources().obtainTypedArray(R.array.image_ids);
> >>>>>>> for (int i = 0; i < imgs.length(); i++) {
> >>>>>>> Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),
> >>>>>>> imgs.getResourceId(i, -1));
> >>>>>>> imageItems.add(new ImageItem(bitmap, "Image#" + i));
> >>>>>>> }
> >>>>>>>
> >>>>>>> return imageItems;
> >>>>>>> }
> >>>>>>>
> >>>>>>> 5. Que vienen a ser esas herramientas? Yo tengo que traermelas de mi
> >>>>>>> api si o si, eso lo afectaria?
> >>>>>>> 6. Lo tome de un ejemplo y lo estoy adaptando, mi grid xml tiene 2
> >>>>>>> archivos:
> >>>>>>>
> >>>>>>> Un main contenedor:
> >>>>>>> <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"
> >>>>>>> android:background="#f0f0f0"
> >>>>>>> tools:context=".MainActivity" >
> >>>>>>>
> >>>>>>> <GridView
> >>>>>>> android:id="@+id/gridView"
> >>>>>>> android:layout_width="fill_parent"
> >>>>>>> android:layout_height="wrap_content"
> >>>>>>> android:layout_margin="5dp"
> >>>>>>> android:columnWidth="100dp"
> >>>>>>> android:gravity="center"
> >>>>>>> android:numColumns="auto_fit"
> >>>>>>> android:verticalSpacing="5dp"
> >>>>>>> android:drawSelectorOnTop="true"
> >>>>>>> android:stretchMode="columnWidth" >
> >>>>>>> </GridView>
> >>>>>>>
> >>>>>>> </RelativeLayout>
> >>>>>>>
> >>>>>>> Y un row_grid para contener cada imagen y descripcion:
> >>>>>>> <LinearLayout xmlns:android="
> >>>>>>> http://schemas.android.com/apk/res/android"
> >>>>>>> xmlns:tools="http://schemas.android.com/tools"
> >>>>>>> android:layout_width="wrap_content"
> >>>>>>> android:layout_height="wrap_content"
> >>>>>>> android:layout_marginTop="5dp"
> >>>>>>> android:orientation="vertical"
> >>>>>>> android:padding="5dp"
> >>>>>>> android:clickable="false"
> >>>>>>> android:background="@drawable/grid_color_selector"
> >>>>>>> android:focusable="false"
> >>>>>>> android:focusableInTouchMode="false">
> >>>>>>>
> >>>>>>> <ImageView
> >>>>>>> android:id="@+id/image"
> >>>>>>> android:layout_width="100dp"
> >>>>>>> android:layout_height="100dp" >
> >>>>>>> </ImageView>
> >>>>>>>
> >>>>>>> <TextView
> >>>>>>> android:id="@+id/text"
> >>>>>>> android:layout_width="fill_parent"
> >>>>>>> android:layout_height="wrap_content"
> >>>>>>> android:layout_marginTop="5dp"
> >>>>>>> android:gravity="center"
> >>>>>>> android:textSize="12sp" >
> >>>>>>> </TextView>
> >>>>>>>
> >>>>>>> </LinearLayout>
> >>>>>>>
> >>>>>>>
> >>>>>>> El 23 de junio de 2014, 11:00, Marina Cuello <
> >>>>>>> marina.eariel@gmail.com> escribió:
> >>>>>>>
> >>>>>>> Mmmm...
> >>>>>>>> 1. ¿Dónde le asignás el adapter a tu GridView? (seguro está fuera
> >>>>>>>> del código que pegás, pero es un olvido común, creeme).
> >>>>>>>> 2. ¿Todo el proceso en getData (which doesn't get many data
> >>>>>>>> anyway), es para generar Bitmaps y después esos bitmaps los usás en la
> >>>>>>>> GridView?
> >>>>>>>> 3. ¿Qué tiene que ver getData() con lo que te trae tu API? No veo
> >>>>>>>> que estés usando el parámetro ese.
> >>>>>>>> 4. ¿Por alguna razón no usás los id que obtenés del array
> >>>>>>>> directamente en tus ImageView o lo que sea que tengas dentro?
> >>>>>>>> 5. Si en realidad pegaste un getData desactualizado o le erraste de
> >>>>>>>> alguna otra manera y en realidad querés usar imágenes online, te
> >>>>>>>> recomendaría usar Picasso o Volley para manejar todo eso.
> >>>>>>>> 6. Como no veo qué tiene tu adapter, te recomiendo a ciegas que
> >>>>>>>> busques info sobre los patrones View Holder y Holder View (mismo concepto,
> >>>>>>>> dos implementaciones, lo que vos hacés parece así visto desde arriba
> >>>>>>>> bastante parecido a Holder View pero me parece que estás usando demasiados
> >>>>>>>> recursos de una y al cuete, generando todos los items de tu Grid antes de
> >>>>>>>> empezar).
> >>>>>>>>
> >>>>>>>> Marina
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> --
> >>>>>> Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos
> >>>>>> Aires | Google Developers Group" de Grupos de Google.
> >>>>>> Para anular la suscripción a este grupo y dejar de recibir sus
> >>>>>> mensajes, envía un correo electrónico a
> >>>>>> gtug-bsas+unsubscribe@googlegroups.com.
> >>>>>> Para acceder a más opciones, visita
> >>>>>> https://groups.google.com/d/optout.
> >>>>>>
> >>>>>
> >>>>> --
> >>>>> Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos
> >>>>> Aires | Google Developers Group" de Grupos de Google.
> >>>>> Para anular la suscripción a este grupo y dejar de recibir sus
> >>>>> mensajes, envía un correo electrónico a
> >>>>> gtug-bsas+unsubscribe@googlegroups.com.
> >>>>> Para acceder a más opciones, visita https://groups.google.com/d/optout
> >>>>> .
> >>>>>
> >>>>
> >>>> --
> >>>> Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos
> >>>> Aires | Google Developers Group" de Grupos de Google.
> >>>> Para anular la suscripción a este grupo y dejar de recibir sus
> >>>> mensajes, envía un correo electrónico a
> >>>> gtug-bsas+unsubscribe@googlegroups.com.
> >>>> Para acceder a más opciones, visita https://groups.google.com/d/optout.
> >>>>
> >>>
> >>> --
> >>> Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos
> >>> Aires | Google Developers Group" de Grupos de Google.
> >>> Para anular la suscripción a este grupo y dejar de recibir sus mensajes,
> >>> envía un correo electrónico a gtug-bsas+unsubscribe@googlegroups.com.
> >>> Para acceder a más opciones, visita https://groups.google.com/d/optout.
> >>>
> >>
> >>
> > --
> > Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos
> > Aires | Google Developers Group" de Grupos de Google.
> > Para anular la suscripción a este grupo y dejar de recibir sus mensajes,
> > envía un correo electrónico a gtug-bsas+unsubscribe@googlegroups.com.
> > Para acceder a más opciones, visita https://groups.google.com/d/optout.
> >
>
> --
> Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos Aires | Google Developers Group" de Grupos de Google.
> Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a gtug-bsas+unsubscribe@googlegroups.com.
> Para obtener más opciones, visita https://groups.google.com/d/optout.
--
Has recibido este mensaje porque estás suscrito al grupo "GTUG Buenos Aires | Google Developers Group" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a gtug-bsas+unsubscribe@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.
Suscribirse a:
Enviar comentarios (Atom)
0 comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.