在android上定制网格状布局-使用不同的布局对前三个元素进行充气

在android上定制网格状布局-使用不同的布局对前三个元素进行充气,android,layout,grid,Android,Layout,Grid,我正在尝试制作一个具有gridView特性(适配器、scrolable…)的布局,但也能够放置不同于其他元素的元素。应该是这样的 单击“添加”按钮时,应显示另外两个元素,如下所示: 我已经尝试了很多东西,所以任何想法都是值得赞赏的 编辑 目前,我有一个带有复选标记的自定义分幅的gridview。我可以写一些代码,但不是很多,因为我的合同很紧 public class ItemsGridAdapter extends BaseAdapter { List<Items> I

我正在尝试制作一个具有gridView特性(适配器、scrolable…)的布局,但也能够放置不同于其他元素的元素。应该是这样的

单击“添加”按钮时,应显示另外两个元素,如下所示:

我已经尝试了很多东西,所以任何想法都是值得赞赏的

编辑

目前,我有一个带有复选标记的自定义分幅的gridview。我可以写一些代码,但不是很多,因为我的合同很紧

public class ItemsGridAdapter extends BaseAdapter {

    List<Items> Items;
    Items oneItem;
    Context ctx;
    DisplayImage displayImageTask;
    public ItemsGridAdapter(Context ctx, List<Items> Itemslist){
        this.ctx = ctx;
        this.Items = Itemslist;
        oneItem = new Items();
    }

    @Override
    public int getCount() {
        return Items.size();
    }

    @Override
    public Object getItem(int position) {
        return Items.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        ViewHolder holder;
        if(row == null) {
            LayoutInflater layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = layoutInflater.inflate(R.layout.Items, parent, false);
            holder = new ViewHolder(row);
            row.setTag(holder);
        }
        else {
            holder = (ViewHolder) row.getTag();
        }
        oneItem = Items.get(position);
        holder.ItemsId.setText(String.valueOf(oneItem.getItemsId()));
        holder.ItemsName.setText(oneItem.getName());
        displayImageTask = (DisplayImage) new DisplayImage(holder.ItemsPic).execute(oneItem.getItems_icon());
        return row;
    }

    class ViewHolder
    {
        TextView ItemsName;
        TextView ItemsId;
        ImageView ItemsPic;
        ViewHolder(View v)
        {
            ItemsName = (TextView) v.findViewById(R.id.txtItemsName);
            ItemsId = (TextView) v.findViewById(R.id.txtItemsId);
            ItemsPic = (ImageView) v.findViewById(R.id.ItemsTile);
        }
    }
}
公共类ItemsGridAdapter扩展BaseAdapter{
清单项目;
项目一个项目;
上下文ctx;
显示图像显示图像任务;
公共项GridAdapter(上下文ctx,列表项列表){
this.ctx=ctx;
this.Items=Itemslist;
oneItem=新项目();
}
@凌驾
public int getCount(){
返回Items.size();
}
@凌驾
公共对象getItem(int位置){
返回项目。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
视窗座;
if(行==null){
LayoutInflater LayoutInflater=(LayoutInflater)ctx.getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
行=布局更平坦。充气(R.layout.Items,父项,false);
支架=新的视图支架(行);
row.setTag(支架);
}
否则{
holder=(ViewHolder)row.getTag();
}
oneItem=Items.get(位置);
holder.ItemsId.setText(String.valueOf(oneItem.getItemsId());
holder.ItemsName.setText(oneItem.getName());
displayImageTask=(DisplayImage)新建DisplayImage(holder.itemspc).execute(oneItem.getItems_icon());
返回行;
}
类视图持有者
{
文本视图项目名称;
TextView项目SID;
ImageView项目SPIC;
视图支架(视图v)
{
ItemsName=(TextView)v.findViewById(R.id.txtItemsName);
ItemsId=(TextView)v.findViewById(R.id.txtItemsId);
ItemsPic=(ImageView)v.findviewbyd(R.id.ItemsTile);
}
}
}
此外,我还有一个单项目布局,它是一个方框,右上角有一个复选标记,如图片所示,这是我的gridView:

<GridView
                android:padding="10dp"
                android:id="@+id/itemGrid"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:numColumns="3"
                android:verticalSpacing="0dp"
                android:horizontalSpacing="0dp"
                android:gravity="center"
                android:stretchMode="none"
                android:listSelector="@android:color/transparent"
                android:columnWidth="@dimen/item_tile_dimen"
                >
            </GridView>

实现了临时解决方案。我正在加载带有对象列表(
list
)的网格视图,其中包含两种类型的对象,一种用于按钮,另一种用于内容。主要的逻辑是在Kyogs中找到的


糟糕的是,当我必须隐藏或显示项目时,单击按钮后,我会用新数据重新加载gridview。我将在将来对其进行优化。

您尝试过什么?请发布一些代码,这样就可以使用了。