Android Gridview– 滚动时随机更改元素位置

Android Gridview– 滚动时随机更改元素位置,第1张

概述我有一个GridView,有10行7列.GridView中的元素不是一个独特的形式,一行包含7个元素,一行只有4或5个元素,等等.现在我创建了包含70个元素的完整元素的GridView.现在我想隐藏GridView中的一些元素.我已经尝试将ImageView和TextView的可见性设置为View.INVISIBLE.它工作,但当我们滚动

我有一个GrIDVIEw,有10行7列. GrIDVIEw中的元素不是一个独特的形式,一行包含7个元素,一行只有4或5个元素,等等.现在我创建了包含70个元素的完整元素的GrIDVIEw.现在我想隐藏GrIDVIEw中的一些元素.我已经尝试将ImageVIEw和TextVIEw的可见性设置为VIEw.INVISIBLE.它工作,但当我们滚动GrIDVIEw时,它随机改变.

> This is exactly what I wanted
>还有一个问题是每行包含一个不属于每个元素的标题.

我该怎么办?我是AndroID新手.

码:

@OverrIDepublic int getCount() {    // Todo auto-generated method stub    return @R_301_6818@Flag.size();}@OverrIDepublic String getItem(int position){    // Todo auto-generated method stub    return @R_301_6818@Country.get(position);}@OverrIDepublic long getItemID(int position) {    // Todo auto-generated method stub    return 0;}public static class VIEwHolder{    public ImageVIEw imgVIEwFlag;    public TextVIEw txtVIEwTitle;}@OverrIDepublic 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(@R_301_6818@Country.get(position));    vIEw.imgVIEwFlag.setimageResource(@R_301_6818@Flag.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 – 滚动时随机更改元素位置全部内容,希望文章能够帮你解决Android Gridview – 滚动时随机更改元素位置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1118980.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存