无法将图像视图作为函数中的参数传递,该函数使用许多图像视图填充回收器视图
Unable To Pass Image View As Parameter in Function That Populates Recycler View with Many Image Views
我编写了一个函数来在回收站视图中填充各种图像视图,该函数运行良好没有任何问题。但它太长了(假设我有 20 个图像视图)。我想做一个小函数,做成DRY/re-usable。但是在这样做的同时,我无法弄清楚如何将 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);
最简单的方法是使用这个强大的库之一(Glide、Picasso、Fresco)获取图像
根据 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);
我编写了一个函数来在回收站视图中填充各种图像视图,该函数运行良好没有任何问题。但它太长了(假设我有 20 个图像视图)。我想做一个小函数,做成DRY/re-usable。但是在这样做的同时,我无法弄清楚如何将 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);
最简单的方法是使用这个强大的库之一(Glide、Picasso、Fresco)获取图像
根据 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);