2014-12-11 162 views
0

我想實現網格,它將被動態地填充。我想知道實現這種相對佈局(列表視圖)或網格佈局的最佳方法是什麼?動態網格佈局

enter image description here

+1

網格佈局。祝你好運。 – 2014-12-11 06:11:48

+0

請你指點我一些教程,動態生成網格。因爲我不知道行數。 – Desire 2014-12-11 06:14:23

回答

2

您可以動態生成GridView。

GridView將根據您的需要包含ImageView和TextView。您將不得不使用您的自定義適配器。在它的getView方法中,填充ImageView和TextView。

實施例:

的GridView item.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/imgItem" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:src="@drawable/ic_launcher" /> 

    <TextView 
     android:id="@+id/txtItem" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:fontFamily="trebuchet" 
     android:textColor="@android:color/black" 
     android:textSize="15sp" 
     android:textStyle="bold" /> 

</LinearLayout> 

Java代碼:

項目A POJO類:

public class Item 
{ 
    String title; 
    Drawable image; 
    //getter setter 
} 

適配器類:

//getView method in your adapter class 

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    View itemView = convertView; 
    ViewHolder holder = null; 

    if (itemView == null) 
    { 
     final LayoutInflater layoutInflater = 
      (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     itemView = layoutInflater.inflate(resourceId, parent, false); 

     holder = new ViewHolder(); 
     holder.imgItem = (ImageView) itemView.findViewById(R.id.imgItem); 
     holder.txtItem = (TextView) itemView.findViewById(R.id.txtItem); 
     itemView.setTag(holder); 
    } 
    else 
    { 
     holder = (ViewHolder) itemView.getTag(); 
    } 

    Item item = getItem(position); 
    holder.imgItem.setImageDrawable(item.getImage()); 
    holder.txtItem.setText(item.getTitle()); 

    return itemView; 
} 

現在在您的Activity類中添加適配器數據,然後將該適配器設置爲GridView。

Refer to thisthis

希望它能幫助。

1

你想GridView。簡單示例here。在你的情況下,你需要爲每行創建一個XML佈局以適應你的TextView和ImageView。其他答案解決這個問題。

+0

是否可以在網格視圖中放置圖像視圖和文本視圖以實現相同? – Desire 2014-12-11 06:18:57

+0

是的,最簡單的方法是製作每個單元格將符合的XML佈局。有人剛剛向你展示瞭如何。 – 2014-12-11 06:21:31

+0

答案應該有描述鏈接細節的最小代碼或描述。 – SilentKiller 2014-12-11 07:18:28

0

只需使用GridView和自定義適配器即可。每次希望更新視圖時,請在適配器上撥打notifyDataSetChanged()