Android - 如何从ImageButton数组中获取特定ID?

时间:2013-10-19 19:07:01

标签: android arrays imagebutton

我正在使用大量可点击的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”中声明。 当然,我可以通过每个按钮,但我相信有一个更优雅的解决方案:)

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用HashMap<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);   
            }
        });
    }