在工作中学习了树状控件,这个树状控件也是从一位高手的帖子上看来的,现在小弟在里面加上了一个复选框,问题就来了:
由于树状控件展开的层级比较多,因此子节点有一部分到了手机界面的下面去了,但是当我把底下的这一部分子节点重新移上来后,原先选中的效果就消失了(简单的说,就是CheckBox那个勾又变成灰色的了),不知道是不是因为我在滚动屏幕的时候,界面又进行了刷新?如果是的话,有什么解决办法使得选中的效果不消失吗?谢谢!

解决方案 »

  1.   

    我在listView中遇到类似的问题:
    listView每一行都有一个CheckBox,当选中了以后,来回滚动listView,有时会发现CheckBox没被选中,十分诡异.....
    我的解决方法如下:
    选中CheckBox以后,用一个变量来保存CheckBox的状态,然后在Adapter中的getView方法中通过检查该变量来设置CheckBox的状态。这样listview来回滚动刷新界面的时候都会根据该变量来设置复选框状态。
    仅供参考,希望对你有帮助。
      

  2.   

    HashMap<Integer, Boolean> state = null;
    保存选择状态每次选择的时候
    checkstate.put(pos, checkBox.isChecked());getView()方法里
    boolean checked = checkstate.get(data.get(position).get(pos));
    checkBox.setChecked(checked);
      

  3.   

    嗯,谢谢了,思路我是明白了,不过我的这个是树形结构,position随着展开和收拢是要变化的,而且当我选中一个节点时,它的子节点要全部被选中,要记录这些子节点的状态可能不能靠position了,我自己再弄个id试试