gpt4 book ai didi

Android Gridview - 滚动时元素位置随机变化

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:03:30 25 4
gpt4 key购买 nike

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

  1. This is exactly what I wanted

  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;
}

}

最佳答案

问题在于代码中的 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。这样您就不必编写太多自定义代码。

希望这对您有所帮助。

关于Android Gridview - 滚动时元素位置随机变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16434863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com