2014-04-17 48 views
0

我正在處理一個佈局,該佈局託管許多自定義視圖。每個自定義視圖都具有「myname:num」屬性,該屬性包含唯一數字值。android通過屬性查找自定義視圖

問題:如何通過「num」屬性找到視圖?通常我會使用findViewById()方法,但由於「android:id」不能是數字,我必須找到另一個解決方案。

佈局定義:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:myname="http://schemas.android.com/apk/res/com.example" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <com.example.custom.MyView 
      myname:num="17" 
      myname:type="2" /> 
     <com.example.custom.MyView 
      myname:num="18" 
      myname:type="2" /> 
     <com.example.custom.MyView 
      myname:num="19" 
      myname:type="2" /> 
    </LinearLayout> 
</LinearLayout> 

回答

1

給每一個視圖ID,然後在你的活動,你可以動態使用

int dynamicId = getResources().getIdentifier("*unique_id*", "id", "*package_name*"); 
findViewById(dynamicId); 

所以,如果你id'ed每個增量爲view_1調用每個視圖,view_2,... view_numViews然後,您可以使用類似循環的方式動態獲取它們

for(int i = 1; i <= numViews; i ++){ 
    int dynamicId = getResources().getIdentifier("view_" + i, "id", "*package_name*"); 
    MyView view = (MyView) findViewById(dynamicId); 
} 
+2

你應該緩存所有這些,否則它會非常慢。 – rupps

相關問題