2013-09-24 54 views
1

我試圖創造,使他們重定向您在點擊一個網頁創建與連接到他們的URL圖像按鈕通用頁通用imagebuttons。編譯時還會生成按鈕的數量以及鏈接,它們是從聯機源檢索的。創建具有不同的onclick聽衆

我的問題是,當我嘗試在一個通用的循環來創造一個OnClickListener,他們沒有創造直到按鈕被點擊,因此直到循環結束。

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View rowView = inflater.inflate(rowResourceId, parent, false); 
    ImageButton imageButton = (ImageButton) rowView.findViewById(R.id.imageButton); 
    int id = Integer.parseInt(Ids[position]); 
    String imageFile = MainActivity.GetbyId(id, MainActivity.getSaleArray()).imageURL; 
    String link=MainActivity.GetbyId(id, MainActivity.getSaleArray()).link; 
    imageButton.setTag(link); 

    imageButton.setOnClickListener(new ImageButton.OnClickListener() { 

     public void onClick(View v) { 
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setData(Uri.parse((String) imageButton.getTag())); 
      context.startActivity(intent); 
     } 
    }); 

在上面的代碼中,我有ID和鏈接未知大小的陣列,我有數據I需要在每個按鈕的標籤,但在的OnClick塊我不能imageButton.getTag()調用它們,它要求變量是'最終的'。你能幫我找到解決辦法嗎?

的代碼的其餘部分完美的作品,除了線intent.setData(...)

+0

爲什麼不能將'imageButton'設置爲final? –

+0

一共有多少個圖像按鈕?應該每個按鈕指導你到不同的鏈接? – TharakaNirmana

+0

我不能告訴多少按鍵,這取決於陣列我得到一般的大小。是的,每個鏈接都轉到一個單獨的按鈕。 –

回答

0

你可以聲明link是終局的,直接使用它的OnClickListener內。

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

View rowView = inflater.inflate(rowResourceId, parent, false); 
ImageButton imageButton = (ImageButton) rowView.findViewById(R.id.imageButton); 
int id = Integer.parseInt(Ids[position]); 
String imageFile = MainActivity.GetbyId(id, MainActivity.getSaleArray()).imageURL; 
final String link = MainActivity.GetbyId(id, MainActivity.getSaleArray()).link; 

imageButton.setOnClickListener(new ImageButton.OnClickListener() { 

    public void onClick(View v) { 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(Uri.parse(link)); 
     context.startActivity(intent); 
    } 
}); 
+0

Link是一個變量太多,這是一個不同的鏈接,每個按鈕,這就是我的問題。據我所知,這將使鏈接不可改變一旦分配,不是? –

+0

這似乎是出於某種原因,雖然我不明白「最終」確實在這個例子中。唉,它的工作。乾杯好友。 –

+0

我認爲這段代碼是一個循環內?如果是這樣,在每個循環中聲明'link',因此'final'只意味着你不能修改該循環內的'link'。 –