java android design pinterest

java - Android gridview heterogénea como pinterest?



design (7)

¿Es posible crear pinterest como el diseño en Android usando GridView ? Quiero crear una galería de imágenes usando GridView pero no estoy seguro si es una buena solución. No quiero crear tres LinearLayouts (creo que esta solución no es buena: lista de estilo Pinterest o gridview en android )

Algunas ideas ;)?



Crear diseño como sigue

<ScrollView...> <LinearLayout.... android:id="@+id/linear1" orientation="horizontal"> <LinearLayout.... android:id="@+id/linear2" android:layout_weight="0.33" orientation="vertical"> <LinearLayout.... android:id="@+id/linear3" android:layout_weight="0.33" orientation="vertical"> <LinearLayout.... android:layout_weight="0.33" orientation="vertical"> </LinearLayout> </ScrollView>

Ahora agregue su ImageView dinámicamente en diseños

linear1 = (LinearLayout) findViewById(R.id.linear1); linear2 = (LinearLayout) findViewById(R.id.linear2); linear3 = (LinearLayout) findViewById(R.id.linear3); for(int i=0;i<n;i++) { ImageView iv = new ImageView(this); iv.setImageResource(R.id.icon); int j = count % 3; <---- if(j==0) linear1.addView(iv); else if(j==1) linear2.addView(iv); else linear3.addView(iv); }

salida:



Estoy usando esta lib: https://github.com/huewu/PinterestLikeAdapterView .

Funciona bastante bien El único problema que tengo es que setOnItemClickListener y setOnItemLongClickListener tienen errores, así que configuro los oyentes directamente en convertView.


He estado jugando con esto también (usé LinearLayout) pero al final tuve muchos problemas con el consumo de memoria (especialmente cuando tuve que volver a cargar los elementos). Me decidí por una solución simple que utiliza dos ListViews sincronizadas. De esta forma puedo explotar el almacenamiento en caché interno, lo que ayuda mucho. Para hacer esto tuve que usar OnTouchListener y OnScrollListener que sincronizan listas. Aquí hay un ejemplo:

https://github.com/vladexologija/PinterestListView


Para los visitantes recientes a esta pregunta, sugeriría usar RecyclerView con StaggedGridLayoutManager . Está teniendo más que suficientes funciones y flexibilidad.