Android-为每个按钮自动查找并创建一个setOnClickListener

我有数十个按钮,每个按钮我想要执行以下操作:


Button abcdefg = (Button) this.findViewById(R.id.abcdefg);

        abcdefg.setOnClickListener(new OnClickListener(){

            public void onClick(View v) {

                audiotoplay = "abcdefg";

                playAudio(audiotoplay);

            }

        });

在这种情况下,是否有比为每个按钮复制和粘贴此代码块并仅替换abcdefg为每个按钮ID更为简单的方法来对每个按钮执行此操作?


米琪卡哇伊
浏览 207回答 3
3回答

素胚勾勒不出你

在strings.xml中创建一个字符串数组,其中包含按钮的id作为字符串,例如:<string-array name="buttonids">&nbsp; &nbsp; <item>abc</item>&nbsp; &nbsp; <item>def</item>&nbsp; &nbsp; <item>ghi</item></string-array>然后在您的活动中,获取此数组,并为每个字符串ID获取带有按钮的整数ID getIdentifier()。然后通过findViewById()获取对每个按钮的引用并设置侦听器:String[] buttonids = getResources().getStringArray(R.array.buttonids);for (String buttonid : buttonids) {&nbsp; &nbsp; final String name = buttonid;&nbsp; &nbsp; int id = getResources().getIdentifier(name, "id", getPackageName());&nbsp; &nbsp; Button button = findViewById(id);&nbsp; &nbsp; button.setOnClickListener(new View.OnClickListener() {&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void onClick(View v) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; audiotoplay = name;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; playAudio(audiotoplay);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; });}我假设像您的示例代码中一样,您将把每个按钮的字符串ID分配给变量audiotoplay。如果您在应用中添加或删除按钮,则唯一要做的更改就是从中的数组添加或删除其字符串ID strings.xml。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java