[英]Display no. of items of a recyclerview in a textview in android studio
[英]Android Studio, change the behavior of the back button to affect items in a RecyclerView
我在與RecyclerView一起使用后退按鈕功能時遇到問題,我的目標是模仿“聯系人”應用程序中的行為,在其中按住(長按)RecyclerView中的某個項目,然后在該項目的后面出現一個復選框(他們全部)。 然后,當您按下“后退”按鈕時,所有復選框均消失。
關於我提供的信息,我們可以將問題分為兩個部分:
首先,我們需要解決長時間單擊的問題,我懷疑我們可以將NotifyDataSetChanged()
與隱藏XML中的復選框一起使用,以便可以在checkbox.setVisibility(VISIBLE)
和checkbox.setVisibility(GONE)
之間切換。
最后,這對我來說是最難的部分,我想當按下后退按鈕時,所有復選框都消失了,而不是離開了應用程序。
預先感謝您,如果問題無法理解,我們深表歉意,因為這是我第一次發布問題,英語不是我的母語。
您所描述的稱為上下文動作模式 。
您會注意到,長按該項目時,頂部的工具欄(操作欄)會發生變化,並顯示所選項目的數量以及可以應用於所選項目的一組操作。
然后按返回按鈕取消操作模式。
解釋整個動作模式系統超出了Stackoverflow的討論范圍,但是您可以在Internet上簡單地進行搜索。
例如, 這是面向初學者的教程 。
如果您發布代碼,我可以給您一個更好的答案。
您可能希望適配器包含所選項目的列表。 如果列表包含任何元素,則顯示復選框並選中與列表相對應的元素。 如果為空,則不要這樣做。 您關於通知數據集已更改是正確的。 長按某個項目會將該項目添加到此列表中。 然后,當適配器重新布置項目時,它將顯示復選框,因為該列表不會為空。
對於第二個問題,您想在活動中覆蓋onBackPressed()。 然后,您可以使用一些代碼,例如:
public void onBackPressed() {
if (adapter.hasItemsSelected()) {
adapter.clearSelection()
} else {
super.onBackPressed()
}
}
您需要編寫這些適配器方法。 hasItemsSelected應該檢查所選項目列表中是否有元素,而clearSelection應該清除列表並通知數據集已更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.