如何更改点击的recyclerview行的颜色?

时间:2019-07-27 04:56:36

标签: android android-studio android-recyclerview

我正在开发一个应用来通过解析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()

2 个答案:

答案 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);
}