如何从recyclerView适配器中检测回收,以便可以在回收之前执行操作?

时间:2019-07-09 04:00:39

标签: android android-recyclerview recycler-adapter recyclerview-layout

我有一个recyclerview,其中包含带有editTexts的字段。滚动时,由于我使用的某些功能以及视图被回收,因此编辑文本中的数据会全部混合或删除。 如果我可以在回收视图之前保存数据,则可以完全解决此问题。 如何通过WITHIN适配器检测到这种情况?

4 个答案:

答案 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();

使用此功能即可实现。