Одинаковые представления в ViewFlipper с различными прослушивателями щелчков

1

У меня есть 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

Теги:

2 ответа

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 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
    Огромное спасибо! Это решение!
0

Все выглядит хорошо, за исключением того, что вы никогда не меняете URL. Если вам нужен разный URL для каждого вида, вам нужно изменить его где-нибудь в цикле. Вы можете настроить их в String[], соответствующем вашим представлениям, и просто использовать urls[i] в этом случае. Во всяком случае, это один из способов.

  • 0
    Извините, я просто слепо вырезал население URL. На самом деле я сделал то, что вы предложили, и это не сработало. Ответ с помощью setTag of Femi - это решение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню