Невозможно передать представление изображения как параметр в функции, которая заполняет представление Recycler многими представлениями изображения - PullRequest
0 голосов
/ 16 апреля 2019

Я написал функцию для заполнения различных представлений изображений в представлении переработчика, ничего плохого в том, что эта функция работает нормально.Но это слишком долго (скажем, если у меня есть 20 изображений).Я хочу сделать небольшую функцию и сделать ее СУХОЙ / многоразового использования.Но при этом я не могу понять, как передать изображение в качестве параметра в функции.Теперь, прежде чем начать заниматься голосованиями или разобраться в себе, четко подумайте о том, что я прошу, и ответьте, чтобы код можно было использовать повторно, не пытайтесь заставить его работать по-другому, потому что функция уже работает.

Объявление функции -

private void updateIcons(ViewHolder viewHolder) {

    if (blockStatus == null || blockStatus.equals("not_blocked")) {

        viewHolder.ivBlock.setImageResource(R.drawable.block);

    } else if (blockStatus.equals("blocked")) {

        viewHolder.ivBlock.setImageResource(R.drawable.unblocked);

    }

    if (hideStatus == null || hideStatus.equals("visible")) {

        viewHolder.ivHide.setImageResource(R.drawable.hide);

    } else if (hideStatus.equals("hidden")) {

        viewHolder.ivHide.setImageResource(R.drawable.show);

    }

    if (notificationStatus == null || notificationStatus.equals("allowed")) {

        viewHolder.ivMute.setImageResource(R.drawable.mute);

    } else if (notificationStatus.equals("muted")) {

        viewHolder.ivMute.setImageResource(R.drawable.unmute);

    }

    if (pinSequence == null || pinSequence.equals("none")) {

        viewHolder.ivPin.setImageResource(R.drawable.pin);

    } else if (pinSequence.equals("pinned")) {

        viewHolder.ivPin.setImageResource(R.drawable.unpin);

    }

    if (privacyStatus == null || privacyStatus.equals("unlimited")) {

        viewHolder.ivLimit.setImageResource(R.drawable.limit);

    } else if (privacyStatus.equals("limited")) {

        viewHolder.ivLimit.setImageResource(R.drawable.unlimited);

    }

    if (reportStatus == null || reportStatus.equals("not_reported")) {

        viewHolder.ivReport.setImageResource(R.drawable.report);

    } else if (reportStatus.equals("reported")) {

        viewHolder.ivReport.setImageResource(R.drawable.reported);

    }

}

Вызов функции -

updateIcons(viewHolder);

Вот что я пытаюсь сделать, но не могу передать повторно используемые изображения в качестве параметра в функцию.

private void updateIcons(ViewHolder viewHolder, String statusValue, String checkValue1, String checkValue2,
                         int image1, int image2) {

    if (statusValue == null || statusValue.equals(checkValue1)) {

        viewHolder.imageView.setImageResource(image1);

    } else if (statusValue.equals(checkValue2)) {

        viewHolder.imageView.setImageResource(image2);

    }

}

Правильный ответ, основанный на предложении Майка М.

Функция

private void updateIcons(ImageView imageView, String statusValue, String checkValue1, String checkValue2,
                         int image1, int image2) {

    if (statusValue == null || statusValue.equals(checkValue1)) {

        imageView.setImageResource(image1);

    } else if (statusValue.equals(checkValue2)) {

        imageView.setImageResource(image2);

    }

}

И затем ее вызов

updateIcons(viewHolder.ivBlock, blockStatus, "not_blocked" , "blocked",
        R.drawable.block, R.drawable.unblocked);

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Правильный ответ, основанный на предложении Майка М.

Функция

private void updateIcons(ImageView imageView, String statusValue, String checkValue1, String checkValue2,
                         int image1, int image2) {

    if (statusValue == null || statusValue.equals(checkValue1)) {

        imageView.setImageResource(image1);

    } else if (statusValue.equals(checkValue2)) {

        imageView.setImageResource(image2);

    }

}

И затем называя это

updateIcons(viewHolder.ivBlock, blockStatus, "not_blocked" , "blocked",
        R.drawable.block, R.drawable.unblocked);
0 голосов
/ 16 апреля 2019

Самый простой способ - получить изображения с помощью одной из этих мощных библиотек (Glide, Picasso, Fresco)

...