我有一个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 – 滚动时随机更改元素位置所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)