我正在尝试实施这种情况:
我的代码:
decodetByteFullSize = getImageFromApi();
decodedByte=scaleToFitWidth(decodetByteFullSize, photoScroll.getWidth());
String DESIREDTEXT = GetStringFromApi();
ImageView resultImage = new ImageView(this);
resultImage.setImageBitmap(decodedByte);
resultImage.setPadding(0, 0, 0, 10);
resultImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Dialog imagePopup = new Dialog(MainActivity.this);
View view = getLayoutInflater().inflate(R.layout.image_layout, null);
TextView tv = (TextView) view.findViewById(R.id.tabsText);
tv.setText(DESIREDTEXT);
ImageView iv = (ImageView)view.findViewById(R.id.tabsImage);
iv.setImageBitmap(decodetByteFullSize);
imagePopup.setContentView(view);
imagePopup.show();
}
});
photoScroll.addView(resultImage);
问题 - 如何将DESIRED TEXT
和decodetByteFullSize
参数传递给onClick事件,因为它对每个图像来说都是动态的和不同的?
提前致谢!
答案 0 :(得分:2)
final ImageView resultImage = new ImageView(this);
resultImage.setTag(DESIRED TEXT);
resultImage.setImageBitmap(decodedByte);
resultImage.setPadding(0, 0, 0, 10);
resultImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Dialog imagePopup = new Dialog(MainActivity.this);
View view = getLayoutInflater().inflate(R.layout.image_layout, null);
TextView tv = (TextView) view.findViewById(R.id.tabsText);
tv.setText(resultImage.getTag());
imagePopup.setContentView(view);
imagePopup.show();
}
});
答案 1 :(得分:1)
对要在onClickListener中访问的变量使用关键字final
。
如果你通过ScrollView实际上意味着ListView,你可能不希望每次都创建一个新的监听器,而是像Digvesh建议的那样将它放在标签中。
视图的标记可以用作地图,使用资源ID作为关键字:resultImage.setTag(R.id.text, GetStringFromApi());
,resultImage.setTag(R.id.image, decodeByteFull);
。然后可以使用resultImage.getTag(R.id.text)
& resultImage.getTag(R.id.image);
如果你有一个名为text&在xml中的某个位置,您不需要执行任何其他操作,但如果您需要用于此目的的唯一ID,则可以在res \ values目录中的ids.xml文件中创建ID:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="id" name="text" />
<item type="id" name="image" />
</resources>