我有GridView
,有10行7列。 GridView
中的元素不是唯一的形式,一行包含7个元素,一行只有4或5个元素,等等。现在我创建了GridView
,其中包含70个完整元素元素。现在我想隐藏GridView
中的一些元素。我尝试过设置ImageView
和TextView
到View.INVISIBLE
的可见性。它可以工作,但当我们滚动GridView
它随机改变。
还有一个问题是,每一行都包含一个不属于每个元素的标题。
我该怎么办?我是Android新手。
代码:
@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;
}
}
答案 0 :(得分: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,滚动时将重复使用相同的单元格。此时,如果你没有将它们设置为VISIBLE,它们将永远不会出现。
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。这样您就不必制作太多的自定义代码。
希望这有帮助。