如何在动态创建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;
}
}
如果有人有想法,请提供帮助。
答案 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;
}
}
}