Создайте динамический onClick (), который реализует View.OnClickListener - PullRequest
0 голосов
/ 30 октября 2018

в настоящее время мой код является немного избыточным, как показано ниже:

iv_11.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int theCard = Integer.parseInt((String) view.getTag());
            doStuff(iv_11, theCard);
        }
    });

    iv_12.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int theCard = Integer.parseInt((String) view.getTag());
            doStuff(iv_12, theCard);
        }
    });

    iv_13.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int theCard = Integer.parseInt((String) view.getTag());
            doStuff(iv_13, theCard);
        }
    });

    iv_14.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int theCard = Integer.parseInt((String) view.getTag());
            doStuff(iv_14, theCard);
        }
    });

Итак, я решил реализовать View.OnClickListener, чтобы сделать его таким же динамическим, и поэтому в моем классе я реализую View.OnClickListener, а затем заменяю приведенный выше код следующим:

    iv_11.setOnClickListener(this);
    iv_12.setOnClickListener(this);
    iv_13.setOnClickListener(this);
    iv_14.setOnClickListener(this);

и, наконец, я добавляю следующий код:

    public void onClick(View v) {
    int theCard = Integer.parseInt((String) v.getTag());
    doStuff(?, theCard);
}

Проблема в том, что я должен поставить в вопросительном знаке выше?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Метод doStuff должен вызываться как следующий код.

doStuff((ImageView)v, theCard);
0 голосов
/ 30 октября 2018

передать аргумент вида как

doStuff(v, theCard);
...