Android的异构gridview像pinterest?

是否有可能使用GridView在Android上创build像布局一样的pinterest? 我想使用GridView创build图像库,但我不确定是否是好的解决scheme。 我不想创build三个LinearLayouts (我认为这个解决scheme不好: android样式的listview或gridview )

有任何想法吗 ;)?

在这里输入图像描述

像下面一样创build布局

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

现在,在布局中dynamic添加ImageView

 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); } 

输出:

在这里输入图像描述

我一直在玩这个(使用LinearLayout),但最后我有很多内存消耗问题(特别是当我不得不重新加载项目)。 我解决了使用两个同步ListView的简单解决scheme。 这样我可以利用内部caching ,这有助于很多。 为此,我不得不使用同步列表的OnTouchListenerOnScrollListener 。 这是一个例子:

https://github.com/vladexologija/PinterestListView

在这里输入图像描述

用于同步2个ListView的滚动的独立帮助程序: https : //gist.github.com/yanchenko/6179793

对于这个问题的最近访问者,我build议使用RecyclerViewStaggedGridLayoutManager 。 它具有足够的function和灵活性。

我使用这个lib: https : //github.com/huewu/PinterestLikeAdapterView 。

它工作得很好。 我唯一的问题是, setOnItemClickListenersetOnItemLongClickListener是有点bug,所以我直接在侦听器上设置侦听器。

这个库来自Etsy应用程序: https : //github.com/etsy/AndroidStaggeredGrid