簡體   English   中英

使用colSpan和rowSpan的GridView [Android]

[英]GridView with colSpan and rowSpan [Android]

我的問題是關於使用rowSpan和colSpan支持創建GridView。 我在堆棧溢出等方面尋找它。有一些類似的問題,但沒有有效的答案。

一種方法是實現具有不同行類型的自定義ListView適配器。 使用getItemViewType(int position)可以幫助優化這樣的場景,但我擔心會有太多的ViewTypes會使回收效率低下。 因為我想要一個3 cols網格和一些rowSpans高達4或5的元素。

另一種方法可以擴展ListView並使這些“卡”擁有自己的回收器。 我的意思是,如果有這樣的一行:

    ##..//
    ##**//
    ##====
    ##++--  

通常它對於ListView來說只是一行,但它應該有自己的子級和自己的層次結構。 這行永遠不會被重用,因為它真的很獨特。 如果我們使用自定義回收器,所有卡(如上面的ascii藝術的“#”,“=”或“+”)應該轉到特定於其尺寸的回收箱(例如4x2用於'#',1x4用於'=')並且回收的機會會更高。

也許不使用ListView並在Scroller的幫助下實現一個全新的視圖,使用自己的回收器和服務器端確定的每個元素的絕對位置,可能是一個更好的主意。

我問你這個問題,因為我認為你可能會提出一個更好的想法,或者至少給我一些關於如何實現各方面的建議。

Java代碼

private LinearLayout addNewSpannedView(Integer resourceId, ViewGroup rootElement) {
    return (LinearLayout) ((ViewGroup) getLayoutInflater().inflate(resourceId, rootElement, true)).getChildAt(rootElement.getChildCount() - 1);
}
// set columnSpan depending on some logic (gridLayout is the layout to add the view's to -> in my case these are LinearLayouts)
shape = addNewSpannedView(columnSpan == 1 ? R.layout.grid_ll_col_span_1 : R.layout.grid_ll_col_span_2, gridLayout);

grid_ll_col_span_2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="@dimen/shapeWidth"
    android:layout_height="wrap_content"
    android:layout_columnSpan="2"/>

暫無
暫無

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

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