[英]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.