我在listview中每个item上都放了一个EditText,数据都放在一个ArrayList中
我重写了baseadapter的getView方法给每个item的EditText添加了onTextChanged,在修改EditText里面的数据后同时修改ArrayList对应位置的值,这样在listview滑动的时候值就不会错但是现在遇到一个问题比如说原来只显示3个item每个item上都是一个EditText
item1 中EditText的值是 "111"
item2 中EditText的值是 "222"
item3 中EditText的值是 "333"
根据listView的原理
在滑动listveiw让item1消失,item4出现的时候listview其实是不会去生成一个item4,而是变成
item2 -> "222"
item3 -> "333"
item1 -> "444"
那这个时候他就触发了EditText的ontextchanged,因为原来的item1中EditText的值是111而现在变成了444,在发生变化的时候position是1, 如果这个是后我去修改了, 那我的list里就把第一个值修改成了444,这个就错了请问大家是怎么处理这样的问题的

解决方案 »

  1.   

    怎么发了一个一样的帖子,之前的回帖应该就可以解决问题啊。要不你就用setOnFocusChangeListener试试
      

  2.   

    你getView写的有问题。
    同步EditText是用的addTextChangedListener吧?
      

  3.   

    是的 我在getview里是用EditText的addTextChangedListener
    然后在onTextChanged里写的代码, 代码如下:
    holder.Ermqty.addTextChangedListener(new TextWatcher()
    { public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub
    } public void beforeTextChanged(CharSequence s, int start,
    int count, int after) {
    // TODO Auto-generated method stub } public void onTextChanged(CharSequence s, int start,
    int before, int count) {
                                              //我的一些处理
    }
    });但是这样写 在listview滑动的时候也会触发, 不只是在编辑EditText的时候触发
      

  4.   


    昨天你提供的方法我试了一下是有问题的
    刚刚我把代码写在setOnFocusChangeListener里调试了一下,是可以解决这个问题的,谢谢~~,下班结贴
    当时一般在一些开发工具中,这种情况都是从Edit的onchange入手来解决问题, 因为android的listview的这个机制,莫非就没有办法从onchange来入手了? 看看有没有人能帮忙解答一下,感激!!
      

  5.   

    根据listView的原理LZ能不能具体介绍下这个原理呢?谢谢
      

  6.   


    一楼已经说了  具体的看http://disanji.net/2011/02/21/android-listview-getview-and-how-to-put-multi-item-in-listview/就是因为这个原因导致了在滑动listview的时候会触发item上的EditText的ontextchanged
      

  7.   

    setOnFocusChangeListener中有时候貌似会出问题啊