Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改已单击的recyclerview项目的视图背景色_Android_Xml_Android Recyclerview - Fatal编程技术网

Android 更改已单击的recyclerview项目的视图背景色

Android 更改已单击的recyclerview项目的视图背景色,android,xml,android-recyclerview,Android,Xml,Android Recyclerview,我试图在单击回收视图行时更改其背景色。单击一行时,其背景颜色将更改。如果单击了另一行,则前一行将变回其旧状态,而新单击的行将更改颜色。 我曾尝试使用选择器实现这一点,但当我松开触摸键时,颜色会恢复正常,并且没有一行突出显示。 有人知道如何处理这个问题吗?提前谢谢 这是我的选择代码-所需的目标(选定的行在另一行被选中之前保持不变) 您是否尝试过处理元素的onClick事件并更改background color属性 下面是来自post的示例代码 我发布了一个关于选举的问题,有几种方法。但是你的行应该

我试图在单击回收视图行时更改其背景色。单击一行时,其背景颜色将更改。如果单击了另一行,则前一行将变回其旧状态,而新单击的行将更改颜色。 我曾尝试使用
选择器实现这一点,但当我松开触摸键时,颜色会恢复正常,并且没有一行突出显示。

有人知道如何处理这个问题吗?提前谢谢

这是我的选择代码-所需的目标(选定的行在另一行被选中之前保持不变)


您是否尝试过处理元素的onClick事件并更改background color属性

下面是来自post的示例代码

我发布了一个关于选举的问题,有几种方法。但是你的行应该有一个布尔属性,对我来说这是我发现的最简单的方法。在我的问题中,“酷外星人”表现出不同的观点。是另一个问题,与您的问题唯一不同的是,您正在寻找单选。
对于OnBindViewHolder中的Single select,应该有一个变量跟踪以前的选择,并在单击时进行调整。我的问题末尾有我的代码。

请将选择器可绘制的xml添加到问题中。@petey这里阅读效果很好,感谢您的提示,阅读此代码,我不太确定在选择新行时,我看到以前选择的行将返回到其原始颜色的位置,也许我没有看到它?我想这是因为你使用了选择器,也许当元素的焦点消失时,选择又回到了以前的状态。您可以使用一些状态变量(例如check变量)切换其他元素的颜色。谢谢。我试试这个solution@DanielRM我在这里上传了一段视频,向您展示我的实现。当然还有更优雅、更技术的方式,但作为一个新手,我觉得这很好用。谢谢!!这正是我需要的。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="true"
        android:state_pressed="true" android:drawable="@color/charcoal_dark" />
    <item android:state_enabled="true"
        android:state_focused="false" android:drawable="@color/charcoal_dark" />
    <item android:drawable="@color/black"/>
</selector>
boolean check = false;
Button backward_img;
Button backward_img1;
backward_img = (Button) findViewById(R.id.bars_footer_backward);
backward_img1 = (Button) findViewById(R.id.bars_footer_backward1);
backward_img.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        check = true;
        backward_img.setBackgroundColor(Color.BLUE);
    }
});

if (check == true) {
    backward_img1.setBackgroundColor(Color.RED);
    backward_img.setBackgroundColor(Color.BLUE);
}