解决ListView中使用EditText条目滑动时数据消失

当ListView条目往上移动时,会回收重复利用,有可能使编辑框中内容丢失或错乱,解决办法:

1.条目复用时,若果当前EditText已经添加TextWatcher监听,先将它移除,否则数据错乱

if (viewHolder.mEditText.getTag() instanceof TextWatcher) {
			viewHolder.mEditText.removeTextChangedListener((TextWatcher) (viewHolder.mEditText.getTag()));
		}

2.数据保存,和显示,建议用一个类保存数据(也就是给adapter传进来的数据),当adapter初始化时,将数据刷新显示

	TextWatcher mWatcher = new EnrollmentTextWatcher() {

			@Override
			public void afterTextChanged(Editable s) {

				if (TextUtils.isEmpty(s)) {
					userInfo.setMajorRelation(null);
				} else {
					userInfo.setMajorRelation(String.valueOf(s));

				}
			}
		};

3.添加监听 TextWatcher

//添加监听,作用:保存数据
	viewHolder.mEditText.addTextChangedListener(mWatcher);
//添加标记		viewHolder.mEditText.setTag(mWatcher);

猜你喜欢

转载自blog.csdn.net/zhanlv/article/details/80230346
今日推荐