对于Android应用,我使用GridView并扩展BaseAdapter来组织其内容。对于我在扩展的BaseAdapter类中重写的函数getView,我创建了一个LinearLayout,我将ImageView和3个TextViews附加到。现在,我需要实现convertView,但因为我以编程方式创建了我的视图,所以我并不认为我可以使用findViewById来查找这些子视图以更改其属性(如文本和位图)。
我有想法在创建它们时为每个视图分配一个与不同类型视图相关的唯一ID(例如:给我的名字textview id为1,描述textview为id为2等),但我是不确定每个视图中的ID是否必须是唯一的,无论它们是否属于同一种视图。
最终,我如何找到以编程方式创建的线性布局视图的子视图?
答案 0 :(得分:5)
您可以通过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);