[英]How to pass custom parameters into onClick listener
我正在嘗試實現這種情況:
我的代碼:
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事件,因為它對於每個圖像來說也是動態的和不同的?
提前致謝!
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();
}
});
對要在onClickListener中訪問的變量使用關鍵字final
。 如果你通過ScrollView實際上意味着ListView,你可能不希望每次都創建一個新的監聽器,而是像Digvesh建議的那樣將它放在標簽中。
View的標記可以用作映射,使用資源id作為鍵: resultImage.setTag(R.id.text, GetStringFromApi());
, resultImage.setTag(R.id.image, decodeByteFull);
。 然后可以使用resultImage.getTag(R.id.text)
& resultImage.getTag(R.id.image);
檢索這些值resultImage.getTag(R.id.image);
如果您在xml中的某個地方有一個名為text&image的視圖,那么您不需要執行任何其他操作,但如果您希望為此目的使用唯一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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.