自己解决了这个问题,也许你也有同样的问题。
这是由 List Adapter 的 HeaderView 中的 Object 引起的。
我为 View 充气并声明了 Object 并在其上放置了一个 TextWatcher。
View v = LayoutInflater.from(CONTEXT).inflate(R.layout.in_overscrollview, null);
Object= (Object) v.findViewById(R.id.OBJECT_ID);
Object.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after){
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//Do my work
//Update my view
}
});
将其添加到列表适配器并构建适配器。
JobListView = (ListView) getListView().findViewWithTag("JOBLISTVIEWTAG");
JobListView.addHeaderView(v, null, false);
JobsAdapter = new IN_JOBS_ADAPTER(CONTEXT, ITEMS_FOR_ADATER);
ListView.setAdapter(JOBSadapter);
Text Watcher 一切正常。
但是如果我在初始构建后重建了适配器。
JobsAdapter = new IN_JOBS_ADAPTER(CONTEXT, DIFFERENT_ITEMS_FOR_ADAPTER);
ListView.setAdapter(JOBSadapter);
那个HeaderView也被重建了。
该警告会显示,因为 Object 已被移除,而 Text Watcher 仍处于监视状态。
List Adapter 和 Object 被替换了,我猜 Text Watcher 在发生这种情况时正在寻找另一个方向。
所以警告消失了,Text Watcher 奇迹般地找到了 HeaderView 和 Object。但它会失去焦点并记录该警告。
使用
JOBSadapter.notifyDataSetChanged();
修复了问题。
BUT 如果您在 Adapter 中有一个 Object,并且 Text Watcher 附加到 Adapter 适配器内的strong>对象。那么你可能需要做更多的工作。
尝试移除侦听器并在完成您可能正在做的任何工作后重新附加它。
Object.removeTextChangedListener();
或
Object.addTextChangedListener(null);