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



2014-06-22 12:48 GMT-03:00 Maximiliano Burgos <maxib2007@gmail.com>:
Hola Chicos!

Estoy teniendo un problema que creo que es un tema de procesos asincronos.
Primero, armo un gridView por xml y lo instancio en mi clase.
gridView = (GridView) findViewById(R.id.gridView);

Luego, llamo a una api mia para que traiga unas imagenes.
String url = String.format("URL de la api");
new obtainImg().execute(url);

Dentro de la funcion obtainImg(), llamo a un gridAdapter para poder meterlas.
 protected void onPostExecute(String response) {    
    try {
    JSONArray img = new JSONArray(response);
customGridAdapter = new GridViewAdapter(MainActivity.this, R.layout.row_grid, getData(img));
} catch (JSONException e) {
e.printStackTrace();
}  
   }

Se mete a la funcion getData() y llena los datos para las imagenes.
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;
}

Actualmente estoy usando datos locales, no de la api, y funcionaba todo bien. Ahora que meti la llamada, la app queda en blanco, como que nunca termina de armar el customGrid.

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

0 comentarios:

Publicar un comentario

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