4

我有一个GridView10 行和 7 列。中的元素GridView不是唯一的形式,即一行包含 7 个元素,一行只有 4 或 5 个元素,等等。现在我创建了GridView包含 70 个元素的完整元素。现在我想在GridView. 我尝试通过设置 and 的可见性ImageViewTextView尝试View.INVISIBLE。它可以工作,但是当我们滚动GridView它时它会随机变化。

  1. 这正是我想要的

  2. 另一个问题是每一行都包含一个标题,而不是每个元素。

我必须做什么?我是安卓新手。

代码:

@Override
public int getCount() 
{
    // TODO Auto-generated method stub
    return listFlag.size();
}

@Override
public String getItem(int position)
{
    // TODO Auto-generated method stub
    return listCountry.get(position);
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

public static class ViewHolder
{
    public ImageView imgViewFlag;
    public TextView txtViewTitle;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    ViewHolder view;
    LayoutInflater inflator = activity.getLayoutInflater();
    int childSize = parent.getChildCount();
    if(convertView==null)
    {
        view = new ViewHolder();
        convertView = inflator.inflate(R.layout.gridview_row, null);
        view.txtViewTitle = (TextView) convertView.findViewById(R.id.textView1);
        view.imgViewFlag  = (ImageView) convertView.findViewById(R.id.imageView1);
        convertView.setTag(view);
    }
    else
    {
        view = (ViewHolder) convertView.getTag();
    }

    if(position==64||position==57||position==58||position==59||position==50||position==23||position==16||position==17||position==9||position==10||position==12||position==1||position==2||position==8)
    {
        view.txtViewTitle.setVisibility(View.GONE);
        view.imgViewFlag.setVisibility(View.GONE);
    }

    view.txtViewTitle.setText(listCountry.get(position));
    view.imgViewFlag.setImageResource(listFlag.get(position));

    return convertView;
}

}
4

1 回答 1

3

问题在于代码中的 setVisibility 调用。

if(position==64||position==57||position==58||position==59||position==50||position==23||position==16||position==17||position==9||position==10||position==12||position==1||position==2||position==8)
{
    view.txtViewTitle.setVisibility(View.GONE);
    view.imgViewFlag.setVisibility(View.GONE);
}

当您不需要它们时将它们设置为 GONE,但在需要它们时不将它们设置为 VISIBLE。将 设置为 GONE 后,滚动时将重复使用相同的单元格。那时,如果您不将它们设置为可见,它们将永远不会出现。

if(position==64||position==57||position==58||position==59||position==50||position==23||position==16||position==17||position==9||position==10||position==12||position==1||position==2||position==8)
{
    view.txtViewTitle.setVisibility(View.GONE);
    view.imgViewFlag.setVisibility(View.GONE);
} else {
    view.txtViewTitle.setVisibility(View.VISIBLE);
    view.imgViewFlag.setVisibility(View.VISIBLE);
}

要解决关于标题的第二部分,您可以为每个单元格添加标题的 TextView,但仅当它是行中的第一项时才将其可见性设置为 VISIBLE。这样您就不必编写太多自定义代码。

希望这可以帮助。

于 2013-05-08T07:27:50.837 回答