簡體   English   中英

Android Studio,更改后退按鈕的行為以影響RecyclerView中的項目

[英]Android Studio, change the behavior of the back button to affect items in a RecyclerView

我在與RecyclerView一起使用后退按鈕功能時遇到問題,我的目標是模仿“聯系人”應用程序中的行為,在其中按住(長按)RecyclerView中的某個項目,然后在該項目的后面出現一個復選框(他們全部)。 然后,當您按下“后退”按鈕時,所有復選框均消失。

關於我提供的信息,我們可以將問題分為兩個部分:

  1. 首先,我們需要解決長時間單擊的問題,我懷疑我們可以將NotifyDataSetChanged()與隱藏XML中的復選框一起使用,以便可以在checkbox.setVisibility(VISIBLE)checkbox.setVisibility(GONE)之間切換。

  2. 最后,這對我來說是最難的部分,我想當按下后退按鈕時,所有復選框都消失了,而不是離開了應用程序。

預先感謝您,如果問題無法理解,我們深表歉意,因為這是我第一次發布問題,英語不是我的母語。

您所描述的稱為上下文動作模式

您會注意到,長按該項目時,頂部的工具欄(操作欄)會發生變化,並顯示所選項目的數量以及可以應用於所選項目的一組操作。

然后按返回按鈕取消操作模式。

解釋整個動作模式系統超出了Stackoverflow的討論范圍,但是您可以在Internet上簡單地進行搜索。

例如, 這是面向初學者的教程

如果您發布代碼,我可以給您一個更好的答案。

您可能希望適配器包含所選項目的列表。 如果列表包含任何元素,則顯示復選框並選中與列表相對應的元素。 如果為空,則不要這樣做。 您關於通知數據集已更改是正確的。 長按某個項目會將該項目添加到此列表中。 然后,當適配器重新布置項目時,它將顯示復選框,因為該列表不會為空。

對於第二個問題,您想在活動中覆蓋onBackPressed()。 然后,您可以使用一些代碼,例如:

public void onBackPressed() {
    if (adapter.hasItemsSelected()) {
        adapter.clearSelection()
    } else {
        super.onBackPressed()
    }
}

您需要編寫這些適配器方法。 hasItemsSelected應該檢查所選項目列表中是否有元素,而clearSelection應該清除列表並通知數據集已更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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