无法为使用inflater.inflate()充气的行中的行元素设置id

时间:2013-07-08 13:07:24

标签: android layout-inflater

LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v[i]=inflater.inflate(R.layout.row, null);
mainView.add(v[i]);

是否可以为动态添加的视图设置ID?或者有更好的选择吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

v[i] = inflater.inflate(R.layout.row, null);
Button button = (Button) v[i].findViewById(R.id.button);

mainLinear.addView(v[i]);

如果你检查javaDoc的inflate方法,你会看到:

  

返回:膨胀层次结构的根视图。如果root是   提供,这是根视图;否则它是根的   膨胀的XML文件。

因此,如果您为inflate方法传递null参数,则inflate返回膨胀布局,因此您可以设置id或tag或将其存储在局部变量中。

答案 1 :(得分:1)

创建一个按钮列表,您可以创建按钮并设置它们的ID,标签和onclicklistenners,并将它们添加到按钮列表中:

 buttonList = new ArrayList<Button>();

    for (int i=0;i<5;i++){
        Button button = new Button(getApplicationContext());
        button.setOnClickListener(mThisButtonListener);
        button.setId(i);
        button.setTag(i);
        myLayout.addView(button);
        buttonList.add(button);
    }

当您需要再次使用该按钮时,只需使用列表中的ID或标签进行呼叫。