1

大家都知道GridView不像ListView那樣支持頁眉和頁腳。在GridView中實現標題支持的最佳方式是什麼?

有幾種方法可以實現這一點:

  • 手動使用ListView和形式columnt通過ViewGroups。它不適合我,因爲它需要很多佈局操作,比如測量和佈局,並且很難在頂部實現繪圖選擇器。
  • 使用特殊適配器。它可以很好地處理頁腳:我們應該使用Space填充最後一個單元格,然後在頁腳之後手動插入寬度等於GridView寬度的頁腳。但是這不適用於標題:雖然標題被拉伸,但下一個單元格浮動。
  • 使用GridLayout。 GridLayout很好,但500-1000個單元的性能如何? AdapterView支持緩存和重用視圖,據我所知,這是不可能與GridLayout。
  • 擴展GridView並編寫自定義類,該類允許在網格內容之前繪製標題。這很困難,但它應該工作得非常快。讓我們試圖弄清楚如何做到這一點:

    1. 測量標題。這很簡單,我對此沒有疑問。
    2. 網格頂部的佈局標題。我們也應該考慮使用滾動位置來允許整個網格內容移動標題,所以我的第一個問題是:如何知道在滾動時底部邊框應該位於哪裏?
    3. 在標題後面佈置整個網格內容。怎麼做?我以前更新過。
    4. 調度繪製到標題視圖也解決超滾動效果,如果它不好。
    5. 處理滾動事件和刷新標題位置。

那麼你可以建議我嗎?如何做標題偏移量?用每個滾動事件調用轉播是否正確?

回答

0

我搜索了與GridView(但爲FooterView)相同的情況的答案。

我已經仔細閱讀了你的建議,還有一些來自其他網站。我有同樣的反思。我發現一個簡單的方法作爲你的提示:「使用特殊的適配器,它可以很好地處理頁腳......」和this answer by @RaulSoto幫助了我很多。但是當我試圖更新我的gridview時,我有一個NPE,因爲我的頁腳不像我的項目的佈局,我有一個自定義過濾器,重新計算getCount()方法,但不明白添加了另一個視圖。

最後,我發現只有解決方案的工作原理:自定義類

創建自己的類,你說:「擴展GridView和編寫自定義類沒有擴展GridView控件。您應該使用ListView進行擴展並測量整個寬度,列寬和列數。我認爲,擴展GridView,計算標題視圖的高度並在移動GridView時移動它,或者在每次處理滾動事件時刷新標題都不那麼困難。
我搜索了這樣做,我把這個小項目放在GitHub上:HFGridView by Sergey Burish。這正是我所需要的,沒有更多。
我只在自己的應用程序中添加了自定義attrs文件,並自定義了他的項目以獲得預期的結果(特別是,縱向上有一列,橫向模式下有兩列,引用佈局中的numColumns屬性)。
當我嘗試,只是爲了測試,添加HeaderView並刷新內容添加新項目,標題視圖停留在我的gridview列表的頂部,而不刷新自己。

所以,我認爲你應該搜索創建你的課程GridView extends ListView。請參閱SBurish的HFGridView,瞭解它的工作過程非常簡單。

希望這可以幫助你與你的目的。

相關問題