Android heterogeneous gridview like pinterest?
JavaAndroidPinterestJava Problem Overview
Is it possible to create pinterest like layout on Android using GridView
? I want to create image gallery using GridView
but I am not sure if it is good solution. I do not want create three LinearLayouts
(I think that this solution is not good: https://stackoverflow.com/questions/9897808/pinterest-style-listview-or-gridview-in-android)
Any ideas ;)?
Java Solutions
Solution 1 - Java
I've been playing with this also (used LinearLayout) but at the end I had lot of problems with memory consumption (especially when I had to reload the items). I settled on simple solution which uses two synchronized ListViews. This way I can exploit internal caching which helps a lot. To do this I had to use OnTouchListener and OnScrollListener who synchronize lists. Here's an example:
Solution 2 - Java
Create layout like as follow
<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>
Now add your ImageView
dynamically in layouts
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);
}
output:
Solution 3 - Java
Some useful libraries for implementing Pinterest-like grid view:
Solution 4 - Java
For Recent visitors to this question , I would suggest using RecyclerView
with StaggedGridLayoutManager
. It's having more than enough functions and flexibility.
Solution 5 - Java
A standalone helper for synchronizing scrolling of 2 ListViews: https://gist.github.com/yanchenko/6179793
Solution 6 - Java
I am using this lib: https://github.com/huewu/PinterestLikeAdapterView.
It works pretty well. The only issue I have is that the setOnItemClickListener
and setOnItemLongClickListener
are a bit buggy so I set the listeners directly on the convertView.
Solution 7 - Java
This library comes from the Etsy application: https://github.com/etsy/AndroidStaggeredGrid