我编写了一个在回收器视图中填充各种图像视图的函数,该函数的正常工作没有错。但是它太长了(让我说是否有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);
答案 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);