Lorem Ipsum/DOL Differet Solmena

Separat existentie 2010 Unee MYT por scientie, musica, sport etc, litot Europa usa li sam Vocabular Lingues, differe solmen in li grammatica, li pronunciation. Delete this widget in Dashboard and add yours. This is just an example. Read More

Re: [gtug-bsas] Duda Android Ajax GridView

lunes, 23 de junio de 2014

+1

Gustavo Cardelle
GTUG Buenos Aires | Google Developers Group
gtug.com.ar

My Profile  
GTUG|GDG Profile  




El 23 de junio de 2014, 14:39, Pablo Moyano <ultraklon@gmail.com> escribió:
Es verdad, debo un post, bueno, nos ponemos en campanya


El 23 de junio de 2014, 10:27, Bruno Miguens<bmiguens@gmail.com> escribió:

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.

--
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.

0 comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.