我正在开发一个应用来通过解析rss feed来显示发布在我大学网站上的通知。我正在将recyclerview用作每一行的卡片视图。卡视图包含两个文本视图,一个用于显示通知标题,另一个用于显示发布日期。当用户单击卡片视图时,将打开一个新活动,显示该特定通知的详细信息。我想要单击卡片视图时,其背景颜色应更改为灰色,表示已读取特定项目。
我已经使用ArrayList来存储被单击项的位置,并检查ArrayList中是否存在位置(onBindViewHolder的参数)的onBindViewHolder方法。如果是,则将背景颜色更改为灰色。
但是问题是,如果我单击卡片视图,然后上下滚动,其他一些随机卡片视图的颜色也会更改。
img = cv2.imread('amazon.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# inverse thresholding
thresh = cv2.threshold(gray, 195, 255, cv2.THRESH_BINARY_INV)[1]
# find contours
contours = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]
mask = np.ones(img.shape[:2], dtype="uint8") * 255
for c in contours:
# get the bounding rect
x, y, w, h = cv2.boundingRect(c)
if w*h>1000:
cv2.rectangle(mask, (x, y), (x+w, y+h), (0, 0, 255), -1)
res_final = cv2.bitwise_and(img, img, mask=cv2.bitwise_not(mask))
cv2.imshow("boxes", mask)
cv2.imshow("final image", res_final)
cv2.waitKey(0)
cv2.destroyAllWindows()
答案 0 :(得分:0)
private int currentSelectedPosition = RecyclerView.NO_POSITION;
viewHolder.rl_layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentSelectedPosition = position;
notifyDataSetChanged();
}
});
if (currentSelectedPosition == position) {
// change color
} else {
}
答案 1 :(得分:0)
您还应该将颜色重置为正常
尝试
if(clickedItems.contains(position)) {
cardViewHolder.cardView.setCardBackgroundColor(Color.GRAY);
} else {
cardViewHolder.cardView.setCardBackgroundColor(Color.WHITE);
}