在android GridView布局中间设置空单元格

时间:2015-01-31 00:11:02

标签: android gridview

我使用gridview布局处理我的项目,整个代码与Android Developers示例完全相同(由于声誉不佳,我无法发布链接,抱歉)。

当我需要用3 * 3或4 * 4(和其他)网格填充屏幕时,它的工作非常棒,但是现在我必须设计我的gridview只有8个图像视图,我想在中间设置空单元格GridView,就像那样(点击图片):

这是我目前的职位:

current position

这就是我需要做的事情:

need to do

我已经搜索了很多内容,但我找不到一些示例来说明如何实现它。 您知道我该如何解决这个问题吗?

将其设为隐身 -

imageView.setVisibility(View.INVISIBLE);

不适合我,因为那时我失去了#34;我的一个imageViews。

非常感谢!

1 个答案:

答案 0 :(得分:-1)

我们认为您的(x*x)项目总是GridView个,其中x是一个大于1的奇数,如3或5。要隐藏的项目的索引是items.size()/2。请注意,在Android中,9/2 = 4和25/2 = 12.因此,我们已经知道应该隐藏的项目的索引。

接下来,在代码中,当您为该索引调用View方法时,您必须使项adapter.getView()保持不可见。以下是代码的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;

}

这会使您的中间View不可见。你想要的效果。

另请注意,您的GridView行数必须等于此方法的行数。

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

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

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