簡體   English   中英

如何從recyclerView適配器中檢測回收,以便可以在回收之前執行操作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM