我做了一个listview,点击某一行后,那一行会有背景色。但是现在,滚动列表,一旦有背景色的那一行看不到之后,再拖回来,背景色就消失了。设置android:cacheColorHint="#00000000"也没用,不知道是怎么回事。走过路过的大侠们,留点意见吧!

解决方案 »

  1.   

    ~ 这是与ListView重用item有关的~ 也就是你拖到看不见,再拖回来。你那个承载之前那行信息的组件很大可能就不是你上一次拖到隐藏的组件了。你可以重写一下adapter在getView方法里去判断是不是你选中的项,是的画则设背景色,否则去掉背景色~  重写adapter又是另一个话题了~你可以去搜搜“自定义BaseAdapter”
      

  2.   

    你说的“判断是不是你选中的项”,怎么判断?我做了一个小例子,在getView中有if (convertView == null) {}结果是滑动时背景色没消失,但是点击的时候会出现两个出现背景色的选项。我的例子里有11项,点击第一行,1、7两行都出现背景色,点击第三行,3、10两行变色,也就是以6循环了。请问我要怎么解决?怎么判断才不会出现这种情况?
      

  3.   

    设置android:cacheColorHint="#00000000"后应该是没有问题的,你clear一下项目就没有问题了,编译器经常有编译错误的问题
      

  4.   

    在你的adapter里封装一个成员变量作为标识,你每一项应该会有个不同的id或什么的吧?没有的话就用position。 在Activity里点击那项时就给adapter给标识重新赋值。  getView方法里
    if(是标识项){
       设背景色;
    } else {
    }
      

  5.   

    额 没写完~
    if(是标识项){
      设背景色;
    } else {
       取消背景色;
    }
      

  6.   

    你说的clear怎么clear?我把项目清了一下,但是没什么效果。4楼的方法倒是可以,我可以把点击过的记录在一个list中。不过很奇怪,放view对象在getView中if(convertView == view)居然一直都执行不了,结果我只好放position了。不过我的情况还要复杂一点,我再想想怎么改!
      

  7.   

    楼上的解决了表面的问题,但是却会引起另一个问题。那就是当上下移动获得焦点的item时,该item不会反色,因此就看不出来当前选择的是第几项。
    此问题如何解决,我还没有答案。
      

  8.   

    还是记录下位置,在getView中判断好些.