2016-03-23 27 views
0

GridView ya da ilk satırın bir tane olan Liste Görünümü'nü istiyorum Bir Öğenin genişliği büyük ve ikinci öğenin genişliği küçük ancak yüksekliği aynı. Bundan sonra ikinci sıra için bir Öğenin genişliği küçük ve ikinci öğenin genişliği büyüktür. ve bu yazı listesi listenin sonuna kadar devam ediyor.Farklı Öğe boyutunda Liste Görünümü veya Gridview nasıl oluşturulur?

Tam gibi feryat vermek: enter image description here

+0

hile yapmak gerekir bir StaggeredGridLayoutmanager bir RecyclerView kullanın. Bu konuda daha fazla bilgi edinebilirsiniz burada http://developer.android.com/reference/android/support/v7/widget/StaggeredGridLayoutManager.html Ayrıca http istediğini elde etmek böyle bir eğitim takip deneyebilirsiniz: //inducesmile.com/android/android-staggeredgridlayoutmanager-example-tutorial/ –

cevap

0

Listelemek için kitaplığı aramayı başaramıyorum ancak düzen ve çözümlenen sorunlara göre mantık yapıyorum. Burada kodumu paylaşmak istiyorum Verilen soruya göre listeleme şartım var. Verilen girişe göre ağırlık olarak verilen her iki görüntüde iki doğrusal düzen ile düzen yapıyorum.Şimdi mantık tek ve hatta koydum. Tek satırda, LinearLayout görünür ve hatta İkinci LinearLayout görünür. Liste satırı için hazırladığım düzen aşağıda

.

public class ImageAdapterNew extends BaseAdapter { 
private Context mContext; 
private int[] mThumbIds; 
boolean mIsPro; 
ArrayList<HashMap<String, Integer>> imgList = new ArrayList<>(); 
public ImageAdapterNew(Context c, int numPics, 
String imgName, boolean isPro) { 
    mContext = c; 
    mThumbIds = new int[numPics]; 
    int count = 0; 
    HashMap<String, Integer> map = new HashMap<>(); 
    for (int i = 0; i < numPics; i++) { 
     mThumbIds[i] = c.getResources().getIdentifier("small_" + 
     imgName + "_" + i, "drawable", c.getPackageName()); 
     if (count >= 2) { 
      count = 0; 
      imgList.add(map); 
      map = new HashMap<>(); 
      map.put(count + "", mThumbIds[i]); 
     } else { 
      map.put(count + "", mThumbIds[i]); 
     } 
     count++; 
    } 
    mIsPro = isPro; 
} 
public int getCount() { 
    return imgList.size(); 
} 
public Object getItem(int position) { 
    return imgList.get(position); 
} 
public long getItemId(int position) { 
    return position; 
} 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row = convertView; 
    ViewHolder holder = null; 
    if (row == null) { 
     LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     row = inflater.inflate(R.layout.image_grid_new, parent, false); 
     holder = new ViewHolder(); 
     holder.lvFirst = (LinearLayout) row.findViewById(R.id.lvFirst); 
     holder.lvSecond = (LinearLayout) row.findViewById(R.id.lvSecond); 
     holder.imgOne = (ImageView) row.findViewById(R.id.imgOne); 
     holder.imgTwo = (ImageView) row.findViewById(R.id.imgTwo); 
     holder.imgThree = (ImageView) row.findViewById(R.id.imgThree); 
     holder.imgFour = (ImageView) row.findViewById(R.id.imgFour); 
     row.setTag(holder); 
    } else { 
     holder = (ViewHolder) row.getTag(); 
    } 
    if (position % 2 == 0) { 
     holder.lvFirst.setVisibility(View.VISIBLE); 
     holder.lvSecond.setVisibility(View.GONE); 

     if (mThumbIds[position] != 0) { 
     Picasso.with(mContext).load(imgList.get(position).get("0")).noFade().resize(300, 533).centerInside().into(holder.imgOne);    Picasso.with(mContext).load(imgList.get(position).get("1")).noFade().resize(300, 533).centerInside().into(holder.imgTwo); 
      //If you don't want to use Picasso comment previous line and uncomment next line 
      //imageView.setImageResource(mThumbIds[position]); 
     } 
    } else { 
     holder.lvFirst.setVisibility(View.GONE); 
     holder.lvSecond.setVisibility(View.VISIBLE); 
     if (mThumbIds[position] != 0) { 
      Picasso.with(mContext).load(imgList.get(position).get("0")).noFade().resize(300, 533).centerInside().into(holder.imgThree);    Picasso.with(mContext).load(imgList.get(position).get("1")).noFade().resize(300, 533).centerInside().into(holder.imgFour); 
      //If you don't want to use Picasso comment previous line and uncomment next line 
      //imageView.setImageResource(mThumbIds[position]); 
     } 
    } 
    return row; 
} 
static class ViewHolder { 
    ImageView imgOne, imgTwo, imgThree, imgFour; 
    LinearLayout lvFirst, lvSecond; 
} 
} 

Herhangi suggesation veya kod geliştirmek için en bekleriz Yorum: Liste görünümü için

<LinearLayout 
    android:id="@+id/lvFirst" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:layout_margin="3dp"> 

    <ImageView 
     android:id="@+id/imgOne" 
     android:scaleType="centerCrop" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_vertical" 
     android:layout_weight="2.0" 
     android:padding="3dp"/> 

    <ImageView 
     android:id="@+id/imgTwo" 
     android:scaleType="centerCrop" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_vertical" 
     android:layout_weight="1" 
     android:padding="3dp"/> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/lvSecond" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    android:layout_margin="3dp"> 

    <ImageView 
     android:id="@+id/imgThree" 
     android:scaleType="centerCrop" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_vertical" 
     android:layout_weight="1" 
     android:padding="3dp"/> 

    <ImageView 
     android:id="@+id/imgFour" 
     android:scaleType="centerCrop" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_vertical" 
     android:layout_weight="2.0" 
     android:padding="3dp"/> 
</LinearLayout> 

Adaptör kodu feryat verilir.

1

seçiminiz ListView ve gridview bu StaggeredGrid

enter image description here

Tercih etmeniz de eğer recyclerView kullanabilirsiniz deneyelim sınırlı değilse Bazı mantık içerir.

+0

yazı için teşekkürler ama zaten bu kitaplığı bakın ama benim gereksinimi için yararlı olmadığını bu yüzden soru sonrası gerekir. – bhavikkumar

+0

Bu durumda ben de açıklamada @Andy Joyce cevabı öneriyoruz. Ama aynı gereklilik ben staggedgrid düzeni kullanarak geri dönüşümcü görünümü ile yaptım. Onu yayınlamaya çalışacağım. – Kathi

İlgili konular