[英]How can I detect recycling from within a recyclerView adapter, so I can perform an action before it gets recycled?
我有一個recyclerview
,其中包含帶有editTexts
字段。 滾動時,由於我使用的某些功能以及視圖被回收,因此編輯文本中的數據會全部混合或刪除。 如果我可以在回收視圖之前保存數據,則可以完全解決此問題。 如何從WITHIN適配器中檢測到這種情況?
進行此操作的適當方法是,將TextWatcher
設置為EditText
,並將onTextChanged
上傳遞的文本保存到RecyclerView
模型中,並在再次綁定視圖時進行檢索,但是如果您希望在視圖ID回收時進行操作,您必須重寫適配器上的onViewRecycled
方法:
@Override
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
...
}
請注意,為了在重新創建視圖時獲得視圖回收的通知,您還需要為RecyclerView
設置一個空適配器。 這是一個使用片段的示例:
@Override
public void onDestroyView() {
super.onDestroyView();
mRecyclerView.setAdapter(null);
}
在onBindViewHolder()方法中的“視圖”中設置數據時,請使用vh.setIsRecyclable(false);。 它將限制您的視圖被回收。
只需在適配器的onBindViewHolder
方法中添加以下代碼:
viewHolder.setIsRecyclable(false);
因此您永遠不會丟失滾動中的數據。
Android RecyclerView適配器具有的功能,
onViewAttchedToWindow();
onViewDetachedFromWindow();
onViewRecycled();
使用此功能即可實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.