Подтвердить что ты не робот

Android разнородный gridview как pinterest?

Можно ли создать pinterest как макет на Android с помощью GridView? Я хочу создать галерею изображений с помощью GridView, но я не уверен, что это хорошее решение. Я не хочу создавать три LinearLayouts (я думаю, что это решение не очень хорошо: Список просмотров в стиле Pinterest или gridview в android)

Любые идеи;)?

enter image description here

4b9b3361

Ответ 1

Создайте макет, как показано ниже.

<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

Я тоже играл с этим (использовал LinearLayout), но в конце у меня было много проблем с потреблением памяти (особенно когда мне приходилось перезагружать элементы). Я остановился на простом решении, которое использует два синхронизированных ListViews. Таким образом, я могу использовать внутреннее кэширование , которое очень помогает. Для этого мне пришлось использовать OnTouchListener и OnScrollListener, которые синхронизируют списки. Вот пример:

https://github.com/vladexologija/PinterestListView

enter image description here

Ответ 5

Для недавних посетителей этого вопроса я бы предложил использовать RecyclerView с StaggedGridLayoutManager. Он обладает более чем достаточными функциями и гибкостью.

Ответ 6

Я использую этот lib: https://github.com/huewu/PinterestLikeAdapterView.

Это работает очень хорошо. Единственная проблема, с которой я столкнулась, заключается в том, что setOnItemClickListener и setOnItemLongClickListener немного ошибочны, поэтому я устанавливаю прослушиватели непосредственно в convertView.