有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我的想法是在创建视图时为每个视图的不同类型分配一个唯一的ID(例如:给我的名字textview ID为1,描述textview ID为2,等等),但我不确定每个视图中的ID是否必须是唯一的,无论它们是否是同一种视图

最终,我如何找到作为linearlayout视图一部分的子视图,这些视图都是通过编程创建的


共 (1) 个答案

  1. # 1 楼答案

    你可以通过^{}获得LinearLayout的孩子,但很难区分你到底得到了哪个孩子

    我认为分配ID是更好的方法。您可以为视图分配ID,然后通过findViewById()获取视图。对于每个线性布局,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);