Android - 如何在动态创建imageview的循环中实现onClickListener

时间:2014-04-02 16:29:51

标签: android loops imageview onclicklistener final

如何在动态创建onClickListener的循环中实施ImageView 在下面的代码中,我已将imageview声明为" final"。由于imageview是" final", 循环中不可能imageView=new ImageView(CurrentActivity.this)

但如果我删除了" final"关键字,

  

img_loader.DisplayImage(json_array.getJSONObject(j)的.getString(" thumb_image&#34),ImageView的);

将错误显示为"将imageView更改为最终"

我的代码片段就在这里。

final ImageView imageView ;

for(int i=0;i<3;i++){ 

    json_array =jarray.getJSONObject(i).getJSONArray("images");
    final JSONArray json_ar=json_array;

   switch(i){
           case 0:                                                                  

                   imageView=new ImageView(CurrentActivity.this);                                                                        
                   img_loader.DisplayImage(json_array.getJSONObject(j).getString("thumb_image"),imageView);
                   imageView.setOnClickListener(new View.OnClickListener() {
                           @Override
                           public void onClick(View v) {
                            // Code here
                           }
                   });
                   break;

           case 1:
                   imageView=new ImageView(CurrentActivity.this);                                                                        
                   img_loader.DisplayImage(son_array.getJSONObject(j).getString("thumb_image"),imageView);
                   imageView.setOnClickListener(new View.OnClickListener() {
                           @Override
                           public void onClick(View v) {
                            // Code here
                           }
                   });
                   break;

           case 2:
                   imageView=new ImageView(CurrentActivity.this);                                                                        
                   img_loader.DisplayImage(son_array.getJSONObject(j).getString("thumb_image"),imageView);
                   imageView.setOnClickListener(new View.OnClickListener() {
                           @Override
                           public void onClick(View v) {
                            // Code here
                           }
                   });
                   break;
     }  
}

如果有人有想法,请提供帮助。

1 个答案:

答案 0 :(得分:0)

您可以在每个case语句中声明最终的imageView实例,只要您创建一个语句块来保存每个case的逻辑:

for(int i=0;i<3;i++){ 

    json_array =jarray.getJSONObject(i).getJSONArray("images");
    final JSONArray json_ar=json_array;

   switch(i){
           case 0: {                                               

                   final ImageView imageView=new ImageView(CurrentActivity.this);                                                                        
                   img_loader.DisplayImage(json_array.getJSONObject(j).getString("thumb_image"),imageView);
                   imageView.setOnClickListener(new View.OnClickListener() {
                           @Override
                           public void onClick(View v) {
                            // Code here
                           }
                   });
                   break;
           }
           case 1: {
                   final ImageView imageView=new ImageView(CurrentActivity.this);                                                                        
                   img_loader.DisplayImage(son_array.getJSONObject(j).getString("thumb_image"),imageView);
                   imageView.setOnClickListener(new View.OnClickListener() {
                           @Override
                           public void onClick(View v) {
                            // Code here
                           }
                   });
                   break;
           }
           case 2: {
                   final ImageView imageView=new ImageView(CurrentActivity.this);                                                                        
                   img_loader.DisplayImage(son_array.getJSONObject(j).getString("thumb_image"),imageView);
                   imageView.setOnClickListener(new View.OnClickListener() {
                           @Override
                           public void onClick(View v) {
                            // Code here
                           }
                   });
                   break;
           }
     }  
}