0

我有一個RecyclerView,它顯示文檔的每天修改列表。項目是TextView與值分別爲「3號線更新到...」,「刪除第5行」等。ViewHolder手柄2種觀點:在CardViews中嵌入RecyclerView的元素

  • :這是天。這些都是簡單TextView太那個以粗體顯示,較大等
  • 日誌:這就是我說的是:「更新線路3 ......」等

我想是什麼每個「日」及其相應的日誌都嵌入在CardView之內。但是一份文件每天可以有大量的修改(> 100)。因此,以編程方式創建一個以CardView爲根的佈局,在其上調用100次addView()以添加每個日誌,然後將此佈局傳遞給RecyclerView對我來說不是一個好主意。

他們是否有任何方法來界定將嵌入CardView內的「positionStart」和「positionEnd」視圖之間?在我看來,這是不可能的,或者通過在CardView內以編程方式添加每個TextView,但它會減慢視圖的綁定並破壞ViewHolder模式。我是對的還是他們的解決方案我沒有想過?

回答

1

你有3個選項可以實現這種「分組卡」行爲。

  1. (如上所述)您自己創建佈局,並將整個事物放入recyclerview。這可能是最糟糕的解決方案,因爲它首先否定了回收者觀點。

  2. 您只需將每個物品包裝在CardView(並將圓角半徑設置爲0dp)即可。
    在<對於21個設備(我認爲)會有一些額外的填充,每個項目都會顯示爲它自己的卡片,但是在更高的API版本中,這些卡片會彼此相鄰並在它們之間有一些「接縫」。角落上的陰影也有點怪異,但這可能是最簡單和最便宜的解決方案。

    或者,您也可以創建一個自定義視圖,以修復上述錯誤(邊距和陰影之間的距離),並使用自己的視圖來包裝視圖。 (我相信這是收件箱應用程序所做的事情,如果我記得正確的話,這也是功能列表中的卡。)

  3. 您使用ItemDecoration。對於這種方法,您需要對數據集進行一種穩定的設置,但如果它只是標題和日誌,則可以在標題上方繪製陰影,在每個項目的左側和右側繪製邊框,並在最後一個繪製陰影登錄。這也將需要進行一些設置,如果你採取進一步的視圖類型,你也必須修改這個代碼(這是高度依賴於你的數據集)


1.方法可能是最壞的想法。它將用於小列表。

The 2。方法可以工作,但是您必須創建自己的自定義視圖,或者在較低api級別上使用「bug」版本。

3.方法是我嘗試過的一次有趣的方法,並且可以工作,但是在數據,適配器和裝飾之間還會有一些額外的依賴關係。你可以看到這個decoration here on GitHub的例子。它只是在所有物品周圍畫一個陰影。

+0

對不起,由於項目管理,我無法處理這個問題。但是,我嘗試了你的ItemDecoration,它工作的很好!我只是有最後一個項目的問題,它不顯示'CardView'的底部陰影。我認爲這個問題出現在'onDrawOver'裏面,我設法檢測到我最後一個項目(如果這是一個頭文件,這並不重要),但是我在使用Android進行繪製時非常糟糕,而且我無法設法在正確的地方設置底部的陰影,也許你可以幫忙?仍然感謝你的偉大和詳細的答案! – MHogge