2011-06-05 62 views
1

我已經有了一個ViewFlipper,它被多個視圖填充,實際上它們是同一個視圖。一切工作正常,但設置的onClickListener的按鈕工作不喜歡預期:ViewFlipper與不同點擊監聽器的相同視圖

flipStack = (ViewFlipper) findViewById(R.id.clubViewFlipper); 

for(int i=0; i<= clubDataSet.size()-1; i++) { 
clubData = clubDataSet.get(i); 

    LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view = vi.inflate(R.layout.detail_overlay, (ViewGroup)findViewById(R.id.clubDetailScrollView), false); 

    Button websiteButton = (Button) view.findViewById(R.id.clubDetailWebsiteButton); 
    websiteButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      startActivity(webIntent); 
     } 
    }); 

    flipStack.addView(view); 
} 

的ViewFlipper的意見,每一個websiteButton被設置爲相同的URL現在。有沒有辦法改變,或者我的方法與ViewFlipper錯誤?

謝謝!

brejoc

回答

0

您可以使用標籤:

flipStack = (ViewFlipper) findViewById(R.id.clubViewFlipper); 

for(int i=0; i<= clubDataSet.size()-1; i++) { 
clubData = clubDataSet.get(i); 

    LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view = vi.inflate(R.layout.detail_overlay, (ViewGroup)findViewById(R.id.clubDetailScrollView), false); 

    Button websiteButton = (Button) view.findViewById(R.id.clubDetailWebsiteButton); 

    // set the button's tag to be the url of the club 
    websiteButton.setTag(clubData.getUrl()); 
    websiteButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // fetch the URL from the tag. 
      Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(v.getTag().toString())); 
      startActivity(webIntent); 
     } 
    }); 

    flipStack.addView(view); 
} 
+0

非常感謝!這是解決方案! – brejoc 2011-06-05 21:07:39

0

它看起來沒問題,只是你永遠不會改變URL。如果您需要爲每個視圖指定不同的網址,則需要在循環內的某處更改它。您可以將它們設置爲與您的視圖相對應的String[],在這種情況下僅使用urls[i]。無論如何,這是一種方式。

+0

噢,對不起,我只是一味地切出URL的人口。其實我已經完成了你的建議,但沒有奏效。費米setTag的答案是解決方案。 – brejoc 2011-06-05 21:10:13