Android异构gridview像pinterest?

时间:2012-07-31 09:07:31

标签: java android pinterest

是否可以使用GridView在Android上创建类似布局的pinterest?我想使用GridView创建图库,但我不确定它是不是很好的解决方案。我不想创建三个LinearLayouts(我认为这个解决方案不好:Pinterest style listview or gridview in android

任何想法;)?

enter image description here

7 个答案:

答案 0 :(得分:25)

我一直在玩这个(使用LinearLayout)但最后我在内存消耗方面遇到了很多问题(特别是当我不得不重新加载项目时)。我决定使用简单的解决方案 使用两个同步的 ListViews 。这样我可以利用内部缓存,这有很大帮助。 为此,我必须使用同步列表的 OnTouchListener OnScrollListener 。 这是一个例子:

https://github.com/vladexologija/PinterestListView

enter image description here

答案 1 :(得分:21)

创建布局,如下所示

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

现在在布局中动态添加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); 
}

<强>输出:

enter image description here

答案 2 :(得分:20)

答案 3 :(得分:6)

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

答案 4 :(得分:6)

对于此问题的最近访问者,我建议使用RecyclerViewStaggedGridLayoutManager。它具有足够的功能和灵活性。

答案 5 :(得分:3)

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

效果很好。我唯一的问题是setOnItemClickListenersetOnItemLongClickListener有点儿错误所以我直接在convertView上设置了监听器。

答案 6 :(得分:2)

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