无法通过将很多图片视图填充到回收站视图的函数中的参数传递图片视图

时间:2019-04-16 09:48:01

标签: java android android-recyclerview imageview

我编写了一个在回收器视图中填充各种图像视图的函数,该函数的正常工作没有错。但是它太长了(让我说是否有20个图像视图)。我想做一个小功能,使其干燥/可重复使用。但是在这样做的时候,我无法弄清楚如何通过imageview作为函数的参数。现在,在您开始讨价还价或陷入困境之前,请清楚地思考我所要回答的问题,以便使代码可重用,不要因为功能已在工作而尝试使其以其他方式工作。

函数声明为

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);

    }

}

基于Mike M.的建议的正确答案

功能

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 :(得分:0)

最简单的方法是使用其中一个强大的库(Glide,Picasso,Fresco)获取图像

答案 1 :(得分:0)

基于Mike M.的建议的正确答案

功能

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);