从以编程方式在Android中创建的父视图中查找子视图

con*_*ych 4 android view

对于Android应用程序,我正在使用GridView并扩展BaseAdapter来组织其内容。对于在扩展BaseAdapter类中重写的功能getView,我创建了LinearLayout,将其附加一个ImageView和3个TextViews。现在,我需要实现convertView,但是由于我以编程方式创建了视图,所以我认为我无法使用findViewById查找这些子视图来更改其属性(例如文本和位图)。

我有一个想法,即在创建视图时为每个视图分配与不同类型的视图相关的唯一ID(例如:给我的name textview ID为1,description textview ID为2,依此类推),但是我不确定是否这些ID必须在每个视图中都是唯一的,无论它们是否是同一视图。

最终,如何找到全部以编程方式创建的属于线性布局视图的子视图?

Ser*_*tov 5

您可以通过获取LinearLayout的子级,getChildAt()但是很难区分您究竟得到了什么子级。

我认为分配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);
Run Code Online (Sandbox Code Playgroud)