findViewById 用于动态添加的View

findViewById for dynamically added View

是否可以找到添加的 TextView 以使用其他选项对其进行更新。 我正在通过此代码添加带有按钮的新 TextView。现在,我还想为动态添加的 TextView 设置一个 onClickListerner。为此,我必须使用 findViewById 方法找到它们。但它们还没有创建。

我可以用其他方式制作吗?如果可以,怎么做?

    Button hinzufügenButton = (Button) findViewById(R.id.hinzufügen_Button);

    hinzufügenButton.setOnClickListener(new Button.OnClickListener() {

        public void onClick (View view){
            EditText tischName = (EditText) findViewById(R.id.tisch_name_EditText);
            TextView tisch = new TextView(getApplicationContext());
            tisch.setText(tischName.getText());
            tisch.setAllCaps(true);
            tisch.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            tisch.setBackgroundColor(Color.parseColor("#9FA8DA"));
            tisch.setTextSize(25);
            tisch.setId(id);
            id++;


            LinearLayout tischeAnzeigen = (LinearLayout) findViewById(R.id.tische_LinearLayout);

            tischeAnzeigen.addView(tisch);
        }
    });

只需在创建动态视图时添加 onClickListener

示例:

...
tisch.setId(id);
tisch.setOnClickListener(yourListener);
...

您可以使用setId来添加一个id。但你可能不需要。如果您正在动态创建一个视图,那么在创建它时就有一个对它的引用。只需将其设置在该参考上即可。不用找了。