2011-02-15 11 views
7

我的工作與可重用的希望自定義視圖。它應該有一個泛型類型,比如:添加自定義視圖到XML ...但與通用型

public class CustomViewFlipper<someType> extends ViewFlipper { } 

我知道如何綁定一個正常的自定義視圖的XML文件。但我無法找到任何這種情況的例子。有什麼方法可以爲XML中的類定義泛型類型?

回答

4

我不這麼認爲,但你可以創建自己的子類:

public class TheClassYouPutInTheLayoutFile extends CustomViewFlipper<someType> 

,並使用這個類在你的佈局XML。

+0

我想實例化,目前這是正確的答案,所以接受它。謝謝。 – eks 2011-02-18 11:40:04

9

由於類型參數在字節碼實際上清除了,你可以使用XML類名,如果它是不參數化,然後將其轉換爲Java代碼正確的參數化類型。

考慮上課:

public class CustomViewFlipper<T extends View> extends ViewFlipper { 

    //... 

,並在你的活動佈局的xml:

<view 
    class="com.some.package.CustomViewFlipper" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/customFlipper"/> 
在活動

則:

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    //... 
    @SuppressWarnings("unchecked") 
    CustomViewFlipper<TextView> customFlipper = 
      (CustomViewFlipper<TextView>) findViewById(R.id.customFlipper); 
-1

我使用這種方式,它爲我工作。

<com.some.package.CustomViewFlipper 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/customFlipper"/> 

然後在活動中,如下

CustomViewFlipper<someType> customFlipper = 
     (CustomViewFlipper<someType>) findViewById(R.id.customFlipper) 
相關問題