繁体   English   中英

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

[英]Finding child views from parent view created programmatically in Android

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

我有一个想法,当我创建它们时,为每个视图分配一个与不同类型视图相关的唯一 ID(例如:将我的名称 textview 的 id 指定为 1,将描述 textview 的 id 指定为 2 等),但我不确定是否每个视图中的 id 必须是唯一的,无论它们是否是同一种视图。

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

您可以通过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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM