Android 如何在“回收器”视图中高亮显示所选项目

Android 如何在“回收器”视图中高亮显示所选项目,android,android-recyclerview,Android,Android Recyclerview,我正在尝试从Recyclerview中选择值以突出显示所选项目。我想更改背景颜色、文本颜色和图像。现在我使用以下代码 选择器\u行: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/darker_gray" and

我正在尝试从Recyclerview中选择值以突出显示所选项目。我想更改背景颜色、文本颜色和图像。现在我使用以下代码

选择器\u行

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/darker_gray" android:state_pressed="false" android:state_selected="true" />
    <item android:drawable="@color/store_search_list_item_background"/>
</selector>
现在我可以突出显示所选行。我的问题是 1) 当我选择另一行时,它也会高亮显示。我只想突出显示一行。如果用户选择另一行,则不应突出显示前一行

2) 高亮显示行时如何更改文本和图像


请告诉我如何解决这两个问题。

您可以在变量中保存clickposition,因此每当发生新的click时,您只需将变量值替换为新的click position,然后不要忘了使用notifyItemChanged();现在,在您的bindview中检查所选位置并更改项目背景非常简单

粗加工

  onClick(){
    highlightedPosition = getLayoutPostion();
    notifyItemChanged();
    }

  onBindView(int position){
    if(highlightedPosition == position){
    higlightedBackground();
    }else{
    normalBackground();
    }

您可以在变量中保存clickposition,这样每当发生新的click时,您只需将变量值替换为新的click position,之后不要忘记使用notifyItemChanged();现在,在您的bindview中检查所选位置并更改项目背景非常简单

粗加工

  onClick(){
    highlightedPosition = getLayoutPostion();
    notifyItemChanged();
    }

  onBindView(int position){
    if(highlightedPosition == position){
    higlightedBackground();
    }else{
    normalBackground();
    }

android:clickable=“true”
android:focusable=“true”
android:focusableInTouchMode=“true”
android:前台=“@drawable/xx_sel”


android:前台=“@drawable/xx\u bg\u sel”
我用它来让我的相册照片项目预压缩,或者在它上面可以有一个面具。
愿它能帮助你。


android:clickable=“true”
android:focusable=“true”
android:focusableInTouchMode=“true”
android:前台=“@drawable/xx_sel”


android:前台=“@drawable/xx\u bg\u sel”
我用它来让我的相册照片项目预压缩,或者在它上面可以有一个面具。

它可能会对您有所帮助。

在您的模型中设置变量以存储突出显示的信息。在您的operation@Demo邮寄。。notifyItemChanged()不适用于我的方案..@Divyesh。。你能详细解释一下吗??Plz..您的模型包含一个用于所有项的布尔字段,现在在您的recyclerview onbindviewholder方法中,检查布尔值,如果为真,则突出显示该项。在活动类中,当单击项目时,获取该项目的位置,并将该项目的布尔值更改为true。在模型中,设置变量以存储突出显示的信息。在operation@Demo邮寄。。notifyItemChanged()不适用于我的方案..@Divyesh。。你能详细解释一下吗??Plz..您的模型包含一个用于所有项的布尔字段,现在在您的recyclerview onbindviewholder方法中,检查布尔值,如果为真,则突出显示该项。在活动类中,当单击项目时,获取该项目的位置,并将该项目布尔值更改为true。它正在工作。xml资源是否还有其他使用方法?像selector.xml??看看这个,如果你觉得这个答案有用,请接受它。它正在工作。xml资源是否还有其他使用方法?像selector.xml??看到这个,如果你觉得这个答案有用,请接受它。