2012-03-03 135 views
3

對於Android應用程序,我使用了GridView並擴展了BaseAdapter來組織其內容。對於我在我的擴展BaseAdapter類中重寫的函數getView,我創建了一個LinearLayout,我將一個ImageView和3個TextView附加到該LinearLayout。現在,我需要實現convertView,但是因爲我以編程方式創建了視圖,所以我不認爲我可以使用findViewById來查找這些子視圖來更改它們的屬性(如文本和位圖)。在Android中以編程方式創建父視圖中的子視圖

我有一個想法,當我創建它們時爲每個視圖分配一個唯一的ID(例如:給我的名字textview的ID爲1,描述textview的ID爲2等),但我並不確定每個視圖中的id是否必須是唯一的,不管它們是否是同一種觀點。

最終,我如何找到一個子視圖,它是所有以編程方式創建的linearlayout視圖的一部分?

回答

4

您可以通過getChildAt()獲得LinearLayout的子項,但很難區分您獲得的子項。

我認爲分配ID是更好的方法。您可以將ID分配給您的視圖,並稍後通過findViewById()獲取視圖。每個LinearLayout的ID不需要是唯一的。

事情是這樣的:

// Give more sensible names to ID's 
int IMAGEVIEW_ID = 0; 
int TEXTVIEW1_ID = 1; 
int TEXTVIEW2_ID = 2; 
int TEXTVIEW3_ID = 3; 

imageView.setId(IMAGEVIEW_ID); 
textView1.setId(TEXTVIEW1_ID); 
textView2.setId(TEXTVIEW2_ID); 
textView3.setId(TEXTVIEW3_ID); 

... 
// somewhere later 
ImageView imageView = (ImageView) convertView.findViewById(IMAGEVIEW_ID); 
+1

謝謝,它的工作原理,沒有更多的內存不足的錯誤不重用我的意見!我也很失望,我無法像在C++中一樣創建枚舉數併爲它們賦值,所以我只是使用final static int VIEWNAME創建了一個嵌套類併爲它們分配了數字。 – contrapsych 2012-03-04 00:18:56

+0

@Sergey Glotov:這個「convertView」是指什麼。我也嘗試過,但得到一個空。你可以幫助我(請嘗試它爲「LinearLayout」) – kAnNaN 2013-06-07 09:38:42

+0

@ kAnNaN'convertView'是適配器的'getView(int位置,視圖convertView,ViewGroup父)方法 – 2013-06-10 11:55:23

相關問題