web-dev-qa-db-ja.com

Android pinterestのような異種のgridview?

Androidを使用してGridViewを使用してレイアウトのようなpinterestを作成することはできますか?GridViewを使用して画像ギャラリーを作成しますが、それが良い解決策か。3つのLinearLayoutsを作成したくありません(このソリューションは良くないと思います: AndroidのPinterestスタイルリストビューまたはグリッドビュー

何か案は ;)?

enter image description here

57
radzio

次のようなレイアウトを作成します

<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

22
MAC

私もこれで遊んでいます(LinearLayoutを使用)が、最後に(特にアイテムをリロードしなければならないとき)メモリ消費に多くの問題がありました。 2つの同期されたListViewsを使用する簡単なソリューションに決めました。このようにして、内部キャッシングを活用できます。これを行うには、リストを同期するOnTouchListenerおよびOnScrollListenerを使用する必要がありました。以下に例を示します。

https://github.com/vladexologija/PinterestListView

enter image description here

25
vladexologija
20
petrnohejl

この質問への最近の訪問者には、RecyclerViewStaggedGridLayoutManagerを使用することをお勧めします。十分な機能と柔軟性を備えています。

7
MohK

2つのListViewのスクロールを同期するためのスタンドアロンヘルパー: https://Gist.github.com/yanchenko/617979

6
yanchenko

私はこのライブラリを使用しています: https://github.com/huewu/PinterestLikeAdapterView

それはかなりうまくいきます。唯一の問題は、setOnItemClickListenersetOnItemLongClickListenerが少しバグがあるため、convertViewでリスナーを直接設定することです。

3
emerix

このライブラリはEtsyアプリケーションからのものです。 https://github.com/etsy/AndroidStaggeredGrid

2
HannahMitt