1

我正在使用大量可点击的 ImageButtons(准确地说是 116 个)制作一个应用程序。我的问题已经存在:如何在一个循环中声明所有按钮?此外,所有按钮都指向同一个视图,但我需要单击它的按钮的 ID。这是我所拥有的:

public void addListenerOnImageButtons() {
    for(int i = 1; i <= 116; i++) {
        final Context context = this;
        String buttonID = "imgbutton_"+i;
        int resID = getResources().getIdentifier(buttonID,"id",getPackageName());
        imageButton[i] = (ImageButton) findViewById(resID);
        imageButton[i].setOnClickListener(new OnClickListener() 
        {
            @Override
            public void onClick(View arg0) {
                Intent intent = new Intent(context, DetailsActivity.class);
                startActivity(intent);   
            }
        });
    }
}

我的按钮被称为“imgbutton_1”、“imgbutton_2”、...、“imgbutton_116”,并在文件“detail_layout.xml”中声明。当然我可以遍历每个 Button,但我相信有一个更优雅的解决方案 :)

提前致谢!

4

1 回答 1

1

使用 anHashMap<Integer, ImageButton> map = new HashMap<Integer, ImageButton>(); 并使用 id 作为键

for(int i = 1; i <= 116; i++) {
        final Context context = this;
        String buttonID = "imgbutton_"+i;
        int resID = getResources().getIdentifier(buttonID,"id",getPackageName());
        ImageButton imageButton = (ImageButton) findViewById(resID);
        map.put(resID, imageButto);
        imageButton.setOnClickListener(new OnClickListener() 
        {
            @Override
            public void onClick(View arg0) {
                Intent intent = new Intent(context, DetailsActivity.class);
                startActivity(intent);   
            }
        });
    }
于 2013-10-19T19:11:51.047 回答