我在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,这个就错了请问大家是怎么处理这样的问题的
我重写了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,这个就错了请问大家是怎么处理这样的问题的
同步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的时候触发
昨天你提供的方法我试了一下是有问题的
刚刚我把代码写在setOnFocusChangeListener里调试了一下,是可以解决这个问题的,谢谢~~,下班结贴
当时一般在一些开发工具中,这种情况都是从Edit的onchange入手来解决问题, 因为android的listview的这个机制,莫非就没有办法从onchange来入手了? 看看有没有人能帮忙解答一下,感激!!
一楼已经说了 具体的看http://disanji.net/2011/02/21/android-listview-getview-and-how-to-put-multi-item-in-listview/就是因为这个原因导致了在滑动listview的时候会触发item上的EditText的ontextchanged