Android гетерогенный gridview, как pinterest?
можно ли создать pinterest, как макет на Android с помощью GridView
? Я хочу создать галерею изображений с помощью GridView
но я не уверен, что это хорошее решение. Я не хочу создавать три LinearLayouts
(Я думаю, что это решение не годится: Pinterest style listview или gridview в android)
любые идеи ;)?
7 ответов:
создать макет, как следовать
<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); }
выход:
Я играл с этим также (используется LinearLayout), но в конце у меня было много проблем с потреблением памяти (особенно когда мне пришлось перезагрузить элементы). Я остановился на простом решении, которое использует два синхронизированных ListViews. Таким образом, я могу использовать внутренний кэширование что очень помогает. Для этого мне пришлось использовать OnTouchListener и OnScrollListener кто синхронизирует списки. Вот пример:
автономный помощник для синхронизации прокрутки 2 ListViews:https://gist.github.com/yanchenko/6179793
для недавних посетителей этого вопроса я бы предложил использовать
RecyclerView
сStaggedGridLayoutManager
. У него более чем достаточно функций и гибкости.
Я использую этот lib:https://github.com/huewu/PinterestLikeAdapterView.
Он работает довольно хорошо. Единственная проблема у меня есть, что
setOnItemClickListener
иsetOnItemLongClickListener
немного глючит, поэтому я устанавливаю слушателей непосредственно на convertView.
эта библиотека поставляется из приложения Etsy: https://github.com/etsy/AndroidStaggeredGrid