簡體   English   中英

如何將自定義參數傳遞給onClick偵聽器

[英]How to pass custom parameters into onClick listener

我正在嘗試實現這種情況:

  1. 我得到了我的照片
  2. 我將它們動態添加到ScrollView
  3. 對於每個Image,我添加了OnClick監聽器,所以當我單擊圖像時,我得到一個Dialog,顯示圖像全屏(基本上,類似於JQuery中的ThickBox)

我的代碼:

    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 TEXTdecodetByteFullSize參數傳遞給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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM