Android:数组项的监听器

时间:2012-01-31 06:24:05

标签: android arrays loops scope listener

我创建了一个For循环,它为每个ImageView设置一个ID和一个ClickListener。按下单击时,OnClickListner似乎无法找到ID,或者根本没有被调用。

    public int[] myResources = {R.id.bblock1, R.id.bblock2, R.id.bblock3, R.id.bblock4, R.id.bblock5, R.id.bblock6, R.id.bblock7, R.id.bblock8};
    ImageView[] bblock = new ImageView[7];

for(int i = 0; i==myResources.length; i++) {
                             bblock[i]=(ImageView)layout.findViewById(myResources[i]);
                             bblock[i].setOnClickListener(ActivityCheck);

                      } 



View.OnClickListener ActivityCheck = new View.OnClickListener(){
            public void  onClick  (View  v){
                if( v.getId() == (R.id.bblock1)){
                    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/#!/itz_jonno"));
                    startActivity(browserIntent);                   
                }

^^ OnClickListener无法找到该视图。 虽然,没有使用数组和循环,下面的代码确实有效:

ImageView bblock1=(ImageView)layout.findViewById(R.id.bblock1);
bbblock1.setOnClickListener(ActivityCheck);

任何想法为什么数组不会工作,但标准代码会?

3 个答案:

答案 0 :(得分:3)

i==myResources.length更改为i < myResources.length

除非0 == myResources.length

,否则当前循环将立即退出

(整个事件监听器的事情虽然很诱人。)

答案 1 :(得分:2)

除了循环问题之外,您的监听器仅适用于R.id.block 1,它将忽略所有其他视图的事件。你究竟想要实现什么目标?

答案 2 :(得分:0)

for(int i = 0; i==myResources.length; i++) {
                             bblock[i]=(ImageView)layout.findViewById(myResources[i]);
                             bblock[i].setOnClickListener(
                                new View.OnClickListener(){
            public void  onClick  (View  v){
                if( write u r checking condition here ){
                   start u r suitable activity here.                 
                }
                             );

                      }