在Android GRIDVIEW布局中间设置空单元格

在Android GRIDVIEW布局中间设置空单元格,android,gridview,Android,Gridview,我正在使用gridview布局进行我的项目,整个代码与Android开发人员示例完全相同(对不起,我不能发布链接,因为我的声誉很低) 当我需要用3×3或4×4(和等)网格填充屏幕时,它的效果非常好,但是现在我必须用8个IVIEVIEWS来设计我的GRIDVIEW,并且我想在GRIDVIEW的中间设置空的单元,就像这样(点击图像): 这就是我目前的立场: 这就是我需要做的: 我在谷歌上搜索了很多,但是我找不到一些例子来说明如何实现它。 你知道我怎样才能解决这个问题吗 将其设置为“不可见”- i

我正在使用gridview布局进行我的项目,整个代码与Android开发人员示例完全相同(对不起,我不能发布链接,因为我的声誉很低)

当我需要用3×3或4×4(和等)网格填充屏幕时,它的效果非常好,但是现在我必须用8个IVIEVIEWS来设计我的GRIDVIEW,并且我想在GRIDVIEW的中间设置空的单元,就像这样(点击图像):

这就是我目前的立场:

这就是我需要做的:

我在谷歌上搜索了很多,但是我找不到一些例子来说明如何实现它。 你知道我怎样才能解决这个问题吗

将其设置为“不可见”-

imageView.setVisibility(View.INVISIBLE);
不适合我,因为我“丢失”了一个图像视图


非常感谢

> P>让我们考虑在<代码> GRIDVIEW中总是有一个<代码>(x*x)个项目,其中<代码> x>代码>是大于1的奇数,如3或5。要隐藏的项的索引为
items.size()/2
。注意,在Android中,9/2=4和25/2=12。因此,我们已经知道应该隐藏的项的索引

接下来,在代码中,当为该索引调用
adapter.getView()
方法时,只需使项目
View
保持不可见即可。下面是代码的
getView()
部分:

@Override
public View getView(final int position, View convertView, ViewGroup parent) 
{

    ViewHolder viewHolder;

    LayoutInflater inflater = yourContext.getLayoutInflater();

    if(convertView==null)
    {

        viewHolder = new ViewHolder();

        convertView = inflater.inflate(R.layout.your_grid_item_layout, null);

        convertView.setTag(viewHolder);

    }
    else
    {
        viewHolder = (ViewHolder) convertView.getTag();
    }


    if(position == yourItemsList.size()/2){
        convertView.setVisibility(View.INVISIBLE);
    }
    else{
        convertView.setVisibility(View.VISIBLE);
    }

    return convertView;

}
这将使中间的
视图不可见。你想要的效果

还要注意的是,您的
GridView
行数必须等于行数,此方法才能工作

您始终可以根据所拥有的项目数动态更改行数。在
活动
代码中,在
gridView.setAdapter()之前,如下所示:

    gridView.setNumColumns((int) Math.sqrt(myItemsList.size()));

我再次警告您,此代码仅适用于
GridView
3*3、5*5、7*7等配置。

创建透明中间图像!GridView上是否始终有7项?或者(x*x)-1项?嘿@NguyenDoanTung,我已经编辑了我的问题。你能再检查一下吗?谢谢。嘿@joao2fast4u!抱歉这么长时间的回复,我的考试很难。我已经编辑了我原来的帖子,你能再检查一下吗?我坚持了一段时间。。。非常感谢你的帮助。谢谢!您是否尝试实施我的解决方案?是的。当我使用
(View.INVISIBLE)
实现时,适配器从我的imageview数组中获取imageview并将其设置为不可见。但在这种情况下,我“丢失”了我的imageview。因为他们每个人都不一样。我需要的是,当position==5(例如)时,适配器将通过(或不拍摄)imageview。看看我附在问题上的两张图片,这是最好的解释。感谢您的快速回复!实际上这是一个简单的记忆游戏,所以gridview的大小取决于级别。它从3*3开始,到7*6。数组中图像视图的数量取决于每个级别,并且在每个级别都会发生变化。如果没有中间单元格,如何在7*6布局中隐藏中间单元格?