是否可以通过以下方式迭代id字符串?

时间:2017-01-29 03:47:34

标签: android

 for(int i=1;i<=3;i++)
            {
            String my_id="Ezequiel_1_"+i;
        final TextView modelTextview = (TextView) findViewById(R.id.my_id);
        modelTextview.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                the_controller.buttonController(v);
            }
        });
    }

我按照以前的方式安排了我的ID,我不想一个一个地设置方法。是否有可能像那样迭代?

1 个答案:

答案 0 :(得分:5)

不直接,因为字符串不是ID。有两种方法可以做你想做的事情:

1)基于数据

int textViewIds[] = [R.id.Ezequiel_1_1, R.id.Ezequiel_1_2, R.id.Ezequiel_1_3,...]
for(int id: textViewIds) {
   TextView tv = (TextView) findViewById(id);
   ...
}

2)基于名称

for(int i=0; i<numView, i++) {
    int resourceId = resources.getIdentifier("Ezequiel_1_"+i, "id", 
       context.getPackageName());
   TextView tv = (TextView) findViewById(id);
   ...
}

我更喜欢方法1,因为它为您提供更清晰的代码和防止1个错误的保护(它们不会编译)。