У меня есть ViewFlipper, который заполняется несколькими видами, которые на самом деле являются одним и тем же видом снова и снова. Все работает отлично, но настройки onClickListener на кнопку работают не так, как ожидалось:
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 теперь устанавливается на тот же URL. Есть ли способ изменить это или мой подход с ViewFlipper неправильный?
Спасибо!
brejoc
Вы можете использовать тег:
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 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);
}
Все выглядит хорошо, за исключением того, что вы никогда не меняете URL. Если вам нужен разный URL для каждого вида, вам нужно изменить его где-нибудь в цикле. Вы можете настроить их в String[]
, соответствующем вашим представлениям, и просто использовать urls[i]
в этом случае. Во всяком случае, это один из способов.