我有一个recyclerview
,其中包含带有editTexts
的字段。滚动时,由于我使用的某些功能以及视图被回收,因此编辑文本中的数据会全部混合或删除。
如果我可以在回收视图之前保存数据,则可以完全解决此问题。
如何通过WITHIN适配器检测到这种情况?
答案 0 :(得分:1)
执行此操作的适当方法是将TextWatcher
设置为EditText
,并将在onTextChanged
上传递的文本保存到RecyclerView
模型中,并在重新绑定视图,但是如果希望在视图ID回收后再进行绑定,则必须重写适配器上的onViewRecycled
方法:
@Override
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
...
}
请注意,为了在重新创建视图时获得视图回收的通知,您还需要为RecyclerView
设置一个空适配器。这是一个使用片段的示例:
@Override
public void onDestroyView() {
super.onDestroyView();
mRecyclerView.setAdapter(null);
}
答案 1 :(得分:0)
在 onBindViewHolder()方法内的“视图”中设置数据时,请使用 vh.setIsRecyclable(false); ;它将限制视图的回收。
答案 2 :(得分:0)
只需在适配器的onBindViewHolder
方法中添加以下代码:
viewHolder.setIsRecyclable(false);
因此您永远不会丢失滚动中的数据。
答案 3 :(得分:0)
Android RecyclerView适配器调用了函数
onViewAttchedToWindow();
onViewDetachedFromWindow();
onViewRecycled();
使用此功能即可实现。