动态网格布局

时间:2014-12-11 06:11:13

标签: android relativelayout grid-layout

我想实现网格,它将动态填充。我想知道实现此相对布局(列表视图)或网格布局的最佳方法是什么?

enter image description here

3 个答案:

答案 0 :(得分:3)

您可以动态生成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代码:

项目的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 :(得分:1)

你想要GridView。简单示例here。在您的情况下,您需要为每一行创建一个XML布局,以适应TextView和ImageView。其他答案在这里解决。

答案 2 :(得分:0)

只需将GridView与自定义适配器一起使用即可。每次希望视图更新时,请在适配器上调用notifyDataSetChanged()